|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Нажатие клавиши в выбранном окне
Код:
procedure flood(); begin wnd := form1.combobox1.ItemIndex; PostMessage(wnd,WM_SETFOCUS,0,0); setforegroundwindow(wnd); {#1}keybd_event(ord('F'),0, 0, 0); sleep(700); keybd_event(ord('F'),0, KEYEVENTF_KEYUP, 0); inp.ki.dwFlags:=0; { for i := 1 to 10 do begin SendInput(70, inp, SizeOf(inp)); end; showmessage('DONE'); } Application.ProcessMessages; {#2} SendMessage(wnd,WM_KEYUP,VK_F1,0); //не пашет {#3} inp.Itype:=INPUT_KEYBOARD; inp.ki.wVk:= Ord(UpCase('F')); Inp.ki.dwFlags:=0; SendInput(1, Inp, SizeOf(Inp)); sleep(700); Inp.ki.dwFlags := KEYEVENTF_KEYUP; SendInput(1, Inp, SizeOf(Inp));//не пашет {#4} PostMessage(wnd,WM_KEYUP,VK_F1,0); //не пашет end; procedure TForm1.Action1Execute(Sender: TObject); begin flood; end; procedure TForm1.Button1Click(Sender: TObject); begin combobox1.clear; wnd := GetWindow(handle, gw_hwndfirst); while wnd <> 0 do begin // Не показываем: if (wnd <> Application.Handle) // Собственное окно and IsWindowVisible(wnd) // Невидимые окна and (GetWindow(wnd, gw_owner) = 0) // Дочерние окна and (GetWindowText(wnd, buff, SizeOf(buff)) <> 0) then begin GetWindowText(wnd, buff, SizeOf(buff)); combobox1.Items.Add(StrPas(buff)); end; wnd := GetWindow(wnd, gw_hwndnext); end; combobox1.ItemIndex := 0; end; так клавиша не нажимается, уже как только не перепробывал... Последний раз редактировалось AD0, 21.02.2013 в 11:16. |
#2
|
||||
|
||||
Цитата:
(keybd_event) сразу две клавиши: Код:
procedure CtrlV; begin keybd_event(VK_CONTROL, 0, KEYEVENTF_EXTENDEDKEY, 0); keybd_event(86, 0, KEYEVENTF_EXTENDEDKEY, 0); keybd_event(VK_CONTROL, 0, KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP, 0); keybd_event(86, 0, KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP, 0); end; Код:
procedure psl(ds: word; vs: boolean); var b: array [0..1] of TInput; begin FillChar(b, SizeOf(b), 0); b[0].Itype:= INPUT_KEYBOARD; b[1].Itype:= INPUT_KEYBOARD; if vs then begin b[0].ki.wScan:= ds; b[0].ki.dwFlags:= 4; b[1].ki.wScan:= ds; b[1].ki.dwFlags:= 4 or 2; end else begin b[0].ki.wVk:= ds; b[1].ki.wVk:= ds; b[1].ki.dwFlags:= 2; end; SendInput(Length(b), b[0], SizeOf(TInput)); end; Я не понял Вашего вопроса, но всё же Вам на него отвечу! Последний раз редактировалось Alegun, 21.02.2013 в 11:41. |
#3
|
|||
|
|||
не работает
|
#4
|
||||
|
||||
Цитата:
Я не понял Вашего вопроса, но всё же Вам на него отвечу! |
#5
|
|||
|
|||
wnd := FindWindow(nil,pansichar(form1.listbox1.items[form1.listbox1.itemindex]));
все добил забыл строку, брал из старого проекта работающего с процессами, вместо листбокса юзайте комбобокс =) |