Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: WinAPI и системное программирование > Handle


Автор: Bogus 10.4.2005, 12:58
Помогите разобраться. (в USES чего только не было.. Если вместо Handle писать "CONTROL." то такого свойства не видит. "TWinControl." - аналогично)

НАДО ИЗБАВИТЬСЯ ОТ ОШИБКИ. Программа ищет окно с определенными заголовками


Вот код функции:

Код
uses

 Windows, SysUtils, Classes, Controls, Forms,
  StdCtrls;
........

function TFind(s: string): boolean;
var
  Wnd: hWnd;
  buff: array[0..127] of Char;
begin
  result := false;
  Wnd := GetWindow(handle, gw_HWndFirst);   // ТУТА пишет " [Error] Unit2.pas(35): Undeclared                                                                                    //identifier: 'handle'"
  while Wnd <> 0 do
  begin
    if (Wnd <> Application.Handle) and
      IsWindowVisible(Wnd) and
      (GetWindow(Wnd, gw_Owner) = 0) and
      (GetWindowText(Wnd, buff, sizeof(buff)) <> 0) then
    begin
      GetWindowText(Wnd, buff, sizeof(buff));
      if pos(s, StrPas(buff)) > 0 then
      begin
        result := true;
        Break;
      end;
    end;
    Wnd := GetWindow(Wnd, gw_hWndNext);
  end;

Автор: p0s0l 10.4.2005, 15:37
Вместо Handle пиши Applcation.Handle...


Автор: Bogus 12.4.2005, 11:46
Да, спасибо, так заработало. А есть другие варианты, чтобы без Uses: forms; ??? smile

Автор: Girder 12.4.2005, 11:52
Ну например:
1. EnumWindows

2. FindWindow(nil,nil);

Автор: Bogus 12.4.2005, 13:20
Благодарю

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)