![]() |
|
|
Регистрация | << Правила форума >> | 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. |
#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); Application.ProcessMessages; end; end; Пишу программы за еду. __________________ |
#3
|
|||
|
|||
![]() Огромное спасибо, все заработало!
|