Доброго времени суток. Написал следующий код:
Код:
const
MyHotKey = ord('1');
MyHotKey2 = ord('2');
procedure CursorClick();
begin
while go do
begin
mouse_event(MOUSEEVENTF_LEFTDOWN,xo,yo,0,0);
mouse_event(MOUSEEVENTF_LEFTUP,xo,yo,0,0);
sleep(200);
end;
end;
procedure TForm1.WMHotKey(var Msg: TWMHotKey);
begin
case Msg.hotkey of
MyHotKey: CursorClick();
MyHotKey2: go:=false;
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
RegisterHotKey(Form1.Handle, MyHotKey, 0, MyHotKey);
RegisterHotKey(Form1.Handle, MyHotKey2, 0, MyHotKey2);
end;
Идея следующая: программа работает в фоновом режиме (т.е. окно не активно). Перехватываются нажатия клавишь (в частности 1 и 2). Хочу, чтобы при нажатии клавиши 1, начать эмитировать клики мышки с каким то интервалом, при нажатии клавиши 2 - прекратить.
Реализация следующая: нажали 1, запустилась функция CursorClick(), в которой кликанье мышки бесконечно зациклено (go = true - глобальная переменная), при нажатии 2 этой переменной go присваивается false и программа теоретически должна выйти из цикла, но так не происходит (мышка кликает и не на что не реагирует, т.е. как бы нажатие клавиши 2 не перехватывается)
В чем моя ошибка, как реализовать задуманное: при нажатии одной клавиши началось действие, при нажатии второй - закончилось.