![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Снова я и снова вопрос. Есть поток, который ищет окна класса Х и если их находит, то пишет Rect, hwnd, и кол-во этих окон:
Код:
function EnumWindowsProc(h: HWND; lParam: LPARAM): Boolean; stdcall; var CN: array [0..1023] of Char; I: Integer; WndRect :TRect; begin Result := True; i:=1; GetClassName(h, @CN, 1024); if CN='х' then begin MyRec.table[i].HWND:=h; GetWindowRect(h, WndRect) ; MyRaec.table[i].HRect:= WndRect; myrec.max:=i; inc (i); end else Структура Myrec Код:
type Myrec= record HWND: HWND; HRect: TRect; end; type PMyrec= record table : array [1..12] of Myrec; max: Integer; end; Код:
type
TWaitTable = class(TThread)
private
x:Integer;
y:Integer;
tab: MyRec;
pab:Pmyrec;
className:string;
fibish:Boolean;
{ Private declarations }
protected
procedure Execute; override;
procedure finished;
procedure ishud;
end;Код:
procedure TWaitTable.Execute;
var
i: Integer;
begin
while not Terminated do
begin
Myrec.max:=0;
EnumWindows (@EnumWindowsProc,0);
if Myrec.max>0 then
begin
pab:=myrec;
for i := 1 to pab.max do
begin
tab:=pab.table[i];
; Synchronize(ishud);
end;
end;
end;
end;
procedure TWaitTable.ishud;
var
tobLeft: TPoint;
aName: array [0..255] of Char;
shud,shud2: string;
hw: HWND;
begin
tobLeft.x:=Tab.HRect.left;
tobLeft.Y:=tab.HRect.Top;
tobLeft:=tobLeft+ ROP;Последний раз редактировалось nixon232, 08.05.2016 в 16:25. |