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

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

Одна программа должна нажать на кнопку другой программы [D7, XP]


Krozzz ©   (2009-02-03 18:46:00) 

Здраствуйте. Собственно задача:
Есть первая програма с одной кнопкой и одним компонентом Label1. При нажатии на кнопку в Label1 записывается случайный набор букв(20  штук). Есть вторая программа только лишь с одной кнопкой. При нажатии на эту кнопку должна нажаться кнопка в первой прграмме(если программа открыта). Как это можно реализовать?
Заранее спасибо.


Krozzz   (2009-02-04 11:34:00) [1]

Спасибо


Сергей М.   (2009-02-04 11:32:00) [2]

Ну наконец-то)

wnd := FindWindowEx(wnd, 0, 'TButton', 'Строго определенное название');


Krozzz   (2009-02-04 11:28:00) [3]


> чем визуально отличаются

названием


Сергей М.   (2009-02-04 11:19:00) [4]


> Krozzz   (04.02.09 11:11) [15]


Ты русский понимаешь ?)

Вопрос же до смешного простой - чем визуальноотличаются эти три кнопки ?


Krozzz   (2009-02-04 11:11:00) [5]


> Пользователь-то сам как ориентируется, на какую жмакать
> мышью ?

Я ненажимаю ни на одну из этих кнопок НЕПОСРЕДСТВЕННО МЫШЬЮ. Это за меня делает программа, код которой я написал выше.
И мне интересно, как заставить эту програму нажимать не на Button3, а на Button1.


Сергей М.   (2009-02-04 11:04:00) [6]

А что, разве на всех трех кнопках написано одно и то же- "ЖМАКНИ МЕНЯ" ?

Пользователь-то сам какориентируется, на какую жмакать мышью ? Они ж все на одно лицо у тебя) ..


Krozzz   (2009-02-04 11:00:00) [7]

Сергей М.
Была одна с именем Button1 (нажималась соответственно только она).
Появилсь еще две : Button2 и Button3. Нажиматься стала только Button3.
Как сделать, чтобы нажималась только Button1 (или Button2)?
Вот код:
procedure TForm1.Button1Click(Sender: TObject);
var wnd:Hwnd;
begin
 wnd := FindWindow(nil,'Form2');
 if wnd <> 0 then
 begin
   wnd := FindWindowEx(wnd, 0, 'TButton', nil);
   SendMessage(wnd, BM_CLICK, 0, 0);
 end;
end;
В нем, насколько я могу видеть, нет привязки а имени кнопки, а только к типу.


Сергей М.   (2009-02-04 10:50:00) [8]

Ну вот что ты называешь "строго определенной" кнопкой ?
Например, "единственная зеленая кнопка среди других кнопок" ..
Или "вторая слева кнопка считая оттуда-то" ..
Или "единственная круглая кнопка среди других кнопок" ..
Или "единственная кнопка среди других кнопок, где написано ЖМАКНИ МЕНЯ"

??


Krozzz   (2009-02-04 10:13:00) [9]


> Надо определиться с критериями "строгой определенности".


Как, если не секрет?


Сергей М.   (2009-02-04 10:11:00) [10]


> то вторая программа будет всегда нажимать на последнюю созданную
> кнопку


Это почему же ?


> чтобы нажималась строго определенная кнопка


Надо определиться с критериями "строгой определенности".


Krozzz   (2009-02-04 10:00:00) [11]

А если у нас в первой программе не одна, а три кнопки , то вторая программа будет всегда нажимать на последнюю созданную кнопку.
Как сделать так, чтобы нажималась строго определенная кнопка?


Leonid Troyanovsky   (2009-02-03 22:38:00) [12]


> Krozzz   (03.02.09 20:46) [5]

> Каким нужно поставить Msg, wParam, lParam?

WM_COMMAND, msdn.

--
Regards, LVT.


Krozzz   (2009-02-03 21:25:00) [13]

DVM c - Огромное спасибо!!!


DVM   (2009-02-03 20:54:00) [14]


> Каким нужно поставить Msg, wParam, lParam?

BM_CLICK, 0, 0


Krozzz   (2009-02-03 20:46:00) [15]


> SendMessage()


Описание:
function SendMessage(Wnd: HWnd; Msg, wParam: Word; lParam: Longint): Longint;

Каким нужно поставить Msg, wParam, lParam?


DVM   (2009-02-03 19:41:00) [16]


> А как отослать?

SendMessage()


Anatoly Podgoretsky   (2009-02-03 19:18:00) [17]

> Krozzz  (03.02.2009 18:46:00)  [0]

Очень просто - одна программа лишняя.


Krozzz   (2009-02-03 18:56:00) [18]


> и отослать кнопке соответствующее сообщение

А как отослать?


DVM   (2009-02-03 18:52:00) [19]


> Как это можно реализовать?

Найти окно первой программы FindWindow(), в нем найти окно кнопки FindWindowEx(), и отослать кнопке соответствующее сообщение о том, что ее нажали или иммитировать клик мышью.


Наверх

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