|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
EmumWindows В потоке?
Снова я и снова вопрос. Есть поток, который ищет окна класса Х и если их находит, то пишет 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. |
#2
|
|||
|
|||
Что форум совсем глючит, пропадают сообщения.
Решил вот так, не знаю как это на что-то влияет, но не суть Код:
---- for i := 1 to pab.max do begin tab:=pab.table[i]; y:=tab.HRect.Top; x:=tab.HRect.Left; --- Код:
function CanClick: Boolean; var State:TKeyboardState; begin Result:=False; GetKeyboardState(State); Result := not(((State[vk_Control] and 128) <> 0) or ((State[VK_SHIFT] and 128) <> 0) or ((State[VK_MENU] and 128) <> 0)) end; fibish:=false; fibish:=CanClick; if fibish then begin HudKB(p,tab.HWND); sleepex(2000, true); end; |