Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как нажать кнопку в чужом приложении. [D5, D7, XP]


JohnKorsh ©   (2010-04-15 18:55:00) 

Не подскажете ли, почему не работает код - надо нажать кнопку 'Ok' в окне Advanced WiFi-Manager. Это единственная кнопка в этом окне. Окно находится (H1 не 0), а кнопка в нём - нет.

var
  H1                       : hwnd;
  H2                       : hwnd;

 begin

  H1 := FindWindow (nil, 'Advanced WiFi-Manager');
  if H1 <> 0 then
   begin
    H2 := FindWindowEx (H1, 0, 'TBitBtn', 'Ok');
    if H2 <> 0 then        // H2 всегда 0 - чего не так ищу?
     begin
      SendMessage(H2, BM_CLICK, 0, 0);
     end;
   end;

 end;


Anatoly Podgoretsky   (2010-04-20 13:31:00) [1]

> JohnKorsh  (20.04.2010 08:20:11)  [11]

Живите по средствам.


JohnKorsh   (2010-04-20 08:20:00) [2]

Извините, больше не буду. Да я бы купил, но у нас денег мало.


Игорь Шевченко   (2010-04-16 16:17:00) [3]

JohnKorsh   (16.04.10 15:20) [9]

Может купить ? А то ведь забаню нахрен


JohnKorsh   (2010-04-16 15:20:00) [4]

Спасибо. Он действительно foreground - предупреждение о демо версии и 30 днях.


Leonid Troyanovsky   (2010-04-16 09:35:00) [5]


> JohnKorsh   (16.04.10 09:24) [7]

> У меня заработал вот такой код

Для того, чтобы он работал, 'Advanced WiFi-Manager'
необходимо быть foreground, т.е. FindWindow,
в данном случае излишен.

А сделать его foreground по таймеру, в общем
случае, не получится.

--
Regards, LVT.


JohnKorsh   (2010-04-16 09:24:00) [6]

У меня заработал вот такой код, может, кому понадобится.

procedure TmAIN.Timer_AuxTimer(Sender: TObject);
 { Press of the key Ok on the Demo version of the WiFi Manager.}
 var
  H1                       : hwnd;

 begin

  H1 := FindWindow (nil, 'Advanced WiFi-Manager');
  if H1 <> 0 then
   begin

    keybd_event(VK_RETURN, 0, 0, 0);
    keybd_event(VK_RETURN, 0, KEYEVENTF_KEYUP, 0);

   end;

  end;


Leonid Troyanovsky   (2010-04-16 08:35:00) [7]


> JohnKorsh   (16.04.10 07:58) [3]

> А как пройтись по всем элементам чужого окна?

Если элементы суть не окна, то, считай, что никак.

--
Regards, LVT.


JohnKorsh   (2010-04-16 08:30:00) [8]

Спасибо.


И. Павел   (2010-04-16 08:11:00) [9]

> А как пройтись по всем элементам чужого окна?


EnumChildWindows, ChildWindowFromPoint, GetNextWindow.

Описание этих функций можно найти, например, тут: http://www.codenet.ru/progr/delphi/WinAPI/


JohnKorsh   (2010-04-16 07:58:00) [10]

А как пройтись по всем элементам чужого окна?


Leonid Troyanovsky   (2010-04-15 19:22:00) [11]


> JohnKorsh   (15.04.10 18:55)  

>     H2 := FindWindowEx (H1, 0, 'TBitBtn', 'Ok');
>     if H2 <> 0 then        // H2 всегда 0 - чего не так
> ищу?

У оного нет окна.

--
Regards, LVT.


И. Павел   (2010-04-15 19:15:00) [12]

А у кнопки класс точно TBitBtn? Может быть стоит пройтись по всем элементам окна и уточнить?


Наверх

Титульная страница Поиск, карта сайта Написать письмо