![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Использование WinAPI для взаимодействия с другими приложениями [D7, WinXP]
memphis007 © (2007-08-02 12:45:00)Здравствуйте! Мне нужно написать программу, которая вставляла мой текст, в текстовое поле другой программы и программно нажимала на кнопку (короче посылала сообщения в чат). Скажите как мне это реализовать, если неизвестно на каком языке написан этот "чат".
(2007-12-27 00:36:00) [1]Удалено модератором
(2007-12-06 14:24:00) [2]Удалено модератором
(2007-12-06 11:32:00) [3]Удалено модератором
Leonid Troyanovsky (2007-08-03 10:02:00) [4]
> memphis007 © (02.08.07 22:33) [19]
> FindWindowEx находит первый хэндл (по классу), а тама два
> контрола с одинаковыми классами без каких либо других отличительных
Иногда контролам присваивают идентификаторы, которые можно считать
путем GetDlgCtrlID. Однако, в общем случае, для идентификации контролов
придется удовлетворяться их z-order, например, порядком их нахождения
FWE, или их координатами на паренте.
{Конечно, в случае, если эти характеристики воспроизводимы, т.е. их
порядок или координаты не меняются при каждом запуске или в ходе
работы}.
--
Regards, LVT.
memphis007 (2007-08-02 22:33:00) [5]Вобщем, все идет своим чередом, только вот какая проблема возникла...
Я посмотрел иерархию нужной мне проги (в которую я буду вставлять текст), дак вот, чтобы добраться до нужного мне контрола нада через кучу парентов пройти...
Проблема:
FindWindowEx находит первый хэндл (по классу), а тама два контрола с одинаковыми классами без каких либо других отличительных знаков...
Как мне получить хендл второго контрола?
Dib@zol (2007-08-02 21:58:00) [6]> [17] Инс © (02.08.07 21:16)
Садюга...
Инс (2007-08-02 21:16:00) [7]
> Нет денег - нет стульев.
- Мама, мама, дай мне конфетку!
- Возьми, доченька
- Ну ведь она же на столе!
- Ну так возьми со стола!
- Но у меня ведь нет ножек!
- Нет ножек - нет конфетки.
Leonid Troyanovsky (2007-08-02 21:07:00) [8]
> memphis007 © (02.08.07 21:05) [14]
> > Утром - деньги, вечером - стулья
>
> :))) Пока и денег нету :)))
Нет денег - нет стульев.
--
Regards, LVT.
Leonid Troyanovsky (2007-08-02 21:06:00) [9]
> Dib@zol © (02.08.07 16:06) [9]
> И нам исходничок кинь как оплату за труды ;)))
Исходнее - вам, а оплату - нам.
--
Regards, LVT.
memphis007 (2007-08-02 21:05:00) [10]
> Утром - деньги, вечером - стулья
:))) Пока и денег нету :)))
Leonid Troyanovsky (2007-08-02 21:04:00) [11]
> memphis007 © (02.08.07 20:23) [10]
> Ага, дам исходник, когда закончу. Скажите еще, пожалуйста,
> если не по кнопке отправляется сообщение, как симитировать
> А, еще... как отыскать нужное мне текстовое поле? :)))
Утром - деньги, вечером - стулья.
--
Regards, LVT.
memphis007 (2007-08-02 21:04:00) [12]Малнько подправил текст:
SendMessage(f, WM_LBUTTONDOWN, MK_LBUTTON, 0);
SendMessage(f, WM_LBUTTONUP, MK_LBUTTON, 0);
memphis007 (2007-08-02 20:25:00) [13]А, еще... как отыскать нужное мне текстовое поле? :)))
memphis007 (2007-08-02 20:23:00) [14]Ага, дам исходник, когда закончу. Скажите еще, пожалуйста, если не по кнопке отправляется сообщение, как симитировать нажатие Ентер'а в чате?
Dib@zol (2007-08-02 16:06:00) [15]> спасибо большое.
И нам исходничок кинь как оплату за труды ;)))
memphis007 (2007-08-02 16:05:00) [16]Друзья :-) спасибо большое. Ща напишу бота для рекламы в городском чате :-) Буду поднимать свое благосостояние :-) Пака!
Dib@zol (2007-08-02 13:29:00) [17]> SendMessage(F, WM_COMMAND, 0, F); // Нажимаем кнопу!!!
Упс. Не то.
SendMessage(F, WM_LBUTTONDOWN, 0, F);
SendMessage(F, WM_LBUTTONUP, 0, F);
Походу так...
Dib@zol (2007-08-02 13:18:00) [18]> Екзампл кидай на почту :-)
Незачем. Екзампл в моем понимании это не прога, а кусок кода, хоть порой и довольно значительный...
Вощем вот:
var F:HWND;
...
F:=FindWindow('BUTTON', 'Типа_текст_на_кнопе'); // Нюф-нюф-нюф! :) Ищем...
SendMessage(F, WM_COMMAND, 0, F); // Нажимаем кнопу!!!
Впрочем, в предпоследнем параме (нуле) в Сенд-е я не уверен. Покури хелп по WM_COMMAND.
WASM (2007-08-02 13:17:00) [19]вставляем текст
SendMessage(Handle, WM_SETTEXT, 0, Integer(PChar('TEXT')));нажимаем на кнопку
SendMessage(Handle, BM_CLICK, 0, 0);
Флаг вам в руки
memphis007 (2007-08-02 13:07:00) [20]Спасибо, за отзывчивость. Программа написана или на Delphi или на С++. FindWindow() и FindWindowEx использовал, но можно было бы и попожробнее... Екзампл кидай на почту :-)