Проверяю в потоке (по таймеру все равно не так работало)
Без синхрона на Getstate не хочет работать. Waitme - sleep без фризов интерфейса. Синхроном работает, но только если курсор на форме
Код:
procedure TStateKB.Execute;
begin
while not Terminated do
GetState;
WaitMe(300)
end;
procedure TStateKB.GetState;
var State: TKeyboardState; r: Boolean;
begin
Application.ProcessMessages;
r := CtrlDown;
Win.ctrl:=r;
end;
Ну и проверка как-то так.
Код:
if CTRL then
Synchronize(Something);
Еще, до проверки есть
Код:
function EnumWindowsProc(h: HWND; lParam: lParam): Boolean; stdcall;
var CN: array [0 .. 1023] of Char; i: integer; s: string; WndRect: TRect;
begin
Application.ProcessMessages;
Result := TRUE;
----
и все работает, независимо где курсор, пока нет искомого окна