21.02.2013, 10:33
|
Прохожий
|
|
Регистрация: 28.02.2010
Сообщения: 4
Репутация: 10
|
|
Нажатие клавиши в выбранном окне
Код:
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.
|