|
#1
|
|||
|
|||
Эмуляция клавиш
Помогите пожалуйста.
Код:
procedure TForm1.Timer1Timer(Sender: TObject); var i : Integer; H : Hwnd; begin H := FindWindow(0, 'Form1'); if (getasynckeystate(VK_INSERT)=-32768) then begin sendmessage(H, wm_char, ord('A'), 0); For i:=1 to length(Edit1.text) do sendmessage(H, wm_char, ord(Edit1.text[i]), 0); SendMessage(H, WM_KEYDOWN, vk_return, 0); SendMessage(H, WM_KEYUP, vk_return, 0); end; end; хочу при нажатии на клавишу Insert, эмулировать в заданном окне клавиши. Form1 это заголовок окна (в той программе Memo), и при нажатии на Insert он должен был выдать так: AText AText AText ... до тех пор пока не отпущу Insert. Но при нажатии на клавишу ничего не происходит. Очень нужна ваша помощь.... |
#2
|
|||
|
|||
есть отличная процедура keybd_event
|
#3
|
|||
|
|||
функция keybd_event работает проверено не в одной проге
keybd_event(VK_Insert,0,0,0);//для нажатия клавиши keybd_event(vk_inser,0, keyeventf_keyup,0);//для отпуска клавиши вот и получается твой клавиатурный эмулятор |
#4
|
|||
|
|||
и где она эмулирует? только в моем программе или везде?
p.s. вроде получилось, но не пойму как эмулировать обычный символ... Код:
keybd_event('A',0, keyeventf_keyup,0); пишет ошибку Код:
keybd_event(ord('A'),0, keyeventf_keyup,0); компилит но не эмулирует то что надо Код:
keybd_event(41,0, keyeventf_keyup,0); (взял код отсюда http://delphi.about.com/od/objectpascalide/l/blvkc.htm) тоже не работает... Последний раз редактировалось ApplicatiOn, 09.01.2009 в 13:17. |