Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.02.2013, 10:27   #1
AD0
 
Регистрация: 28.04.2010
Сообщений: 7
По умолчанию Отправка нажатия клавиши в активное окно

Код:
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;
выбираем окно и программа должна много раз нажать одну и ту же клавишу
уже как ток не пробовал и через евенты, и sendmessage и postmessage
в чем может быть проблема?

Последний раз редактировалось AD0; 21.02.2013 в 11:15.
AD0 вне форума Ответить с цитированием
Старый 21.02.2013, 13:12   #2
AD0
 
Регистрация: 28.04.2010
Сообщений: 7
По умолчанию

wnd := FindWindow(nil,pansichar(form1.list box1.items[form1.listbox1.itemindex]));
вместо листбокса ставим комбобокс и все получается =)
AD0 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как узнать, что окно активное/не активное beegl Общие вопросы Delphi 6 01.01.2013 22:48
Подождать пока активное окно TwiX Общие вопросы Delphi 3 20.03.2012 08:54
Активное окно Messir_Leonard Win Api 4 22.04.2008 19:25
Активное окно MadReason Win Api 12 10.01.2008 17:44
Предыдущее активное окно martinz Win Api 3 25.11.2007 15:02