Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.03.29;
Скачать: CL | DM;

Вниз

Одна программа должна нажать на кнопку другой программы   Найти похожие ветки 

 
Krozzz   (2009-02-03 18:46) [0]

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


 
DVM ©   (2009-02-03 18:52) [1]


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

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


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


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

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


 
Anatoly Podgoretsky ©   (2009-02-03 19:18) [3]

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

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


 
DVM ©   (2009-02-03 19:41) [4]


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

SendMessage()


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


> SendMessage()


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

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


 
DVM ©   (2009-02-03 20:54) [6]


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

BM_CLICK, 0, 0


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

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


 
Leonid Troyanovsky ©   (2009-02-03 22:38) [8]


> Krozzz   (03.02.09 20:46) [5]

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

WM_COMMAND, msdn.

--
Regards, LVT.


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

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


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


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


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


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


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


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


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


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


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

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

??


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

Сергей М.
Была одна с именем 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 11:04) [14]

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

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


 
Krozzz   (2009-02-04 11:11) [15]


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

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


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


> Krozzz   (04.02.09 11:11) [15]


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

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


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


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

названием


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

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

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


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

Спасибо



Страницы: 1 вся ветка

Текущий архив: 2009.03.29;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.018 c
15-1233179940
Кое кто
2009-01-29 00:59
2009.03.29
Проверка языка...


4-1207322584
engine
2008-04-04 19:23
2009.03.29
TerminateProcess


1-1208419242
312kbps
2008-04-17 12:00
2009.03.29
Событие смена активного окна в винде


2-1233301130
Pavel
2009-01-30 10:38
2009.03.29
Работ с компонентом SQLQuery


2-1234260141
Игорь
2009-02-10 13:02
2009.03.29
MOUSEHOOKSTRUCT