![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Доброго времени суток. Написал следующий код:
Код:
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 не перехватывается) В чем моя ошибка, как реализовать задуманное: при нажатии одной клавиши началось действие, при нажатии второй - закончилось. Последний раз редактировалось IPhO, 16.09.2011 в 17:03. |