Конференция "WinAPI" » Использование WinAPI для взаимодействия с другими приложениями [D7, WinXP]
 
  • memphis007 © (02.08.07 12:45) [0]
    Здравствуйте! Мне нужно написать программу, которая вставляла мой текст, в текстовое поле другой программы и программно нажимала на кнопку (короче посылала сообщения в чат). Скажите как мне это реализовать, если неизвестно на каком языке написан этот "чат".
  • Eraser © (02.08.07 12:48) [1]
    SendMessage + F1
  • Инс © (02.08.07 12:53) [2]

    > если неизвестно на каком языке написан этот "чат".


    И молитесь, чтобы не на Java
  • Dib@zol © (02.08.07 12:58) [3]
    > [1] Eraser ©   (02.08.07 12:48)

    Угу. Только до того FindWindow(EX). Екзампл подкинуть?
  • memphis007 © (02.08.07 13:07) [4]
    Спасибо, за отзывчивость. Программа написана или на Delphi или на С++. FindWindow() и FindWindowEx использовал, но можно было бы и попожробнее... Екзампл кидай на почту :-)
  • WASM (02.08.07 13:17) [5]
    вставляем текст
    SendMessage(Handle, WM_SETTEXT, 0, Integer(PChar('TEXT')));

    нажимаем на кнопку
    SendMessage(Handle, BM_CLICK, 0, 0);



    Флаг вам в руки
  • Dib@zol © (02.08.07 13:18) [6]
    > Екзампл кидай на почту :-)

    Незачем. Екзампл в моем понимании это не прога, а кусок кода, хоть порой и довольно значительный...
    Вощем вот:

    var F:HWND;
    ...
    F:=FindWindow('BUTTON', 'Типа_текст_на_кнопе'); // Нюф-нюф-нюф! :) Ищем...
    SendMessage(F, WM_COMMAND, 0, F); // Нажимаем кнопу!!!

    Впрочем, в предпоследнем параме (нуле) в Сенд-е я не уверен. Покури хелп по WM_COMMAND.
  • Dib@zol © (02.08.07 13:29) [7]
    > SendMessage(F, WM_COMMAND, 0, F); // Нажимаем кнопу!!!

    Упс. Не то.
    SendMessage(F, WM_LBUTTONDOWN, 0, F);
    SendMessage(F, WM_LBUTTONUP, 0, F);

    Походу так...
  • memphis007 © (02.08.07 16:05) [8]
    Друзья :-) спасибо большое. Ща напишу бота для рекламы в городском чате :-) Буду поднимать свое благосостояние :-) Пака!
  • Dib@zol © (02.08.07 16:06) [9]
    > спасибо большое.

    И нам исходничок кинь как оплату за труды ;)))
  • memphis007 © (02.08.07 20:23) [10]
    Ага, дам исходник, когда закончу. Скажите еще, пожалуйста, если не по кнопке отправляется сообщение, как симитировать нажатие Ентер'а в чате?
  • memphis007 © (02.08.07 20:25) [11]
    А, еще... как отыскать нужное мне текстовое поле? :)))
  • Leonid Troyanovsky © (02.08.07 21:04) [12]

    > memphis007 ©   (02.08.07 20:23) [10]

    > Ага, дам исходник, когда закончу. Скажите еще, пожалуйста,
    >  если не по кнопке отправляется сообщение, как симитировать

    > А, еще... как отыскать нужное мне текстовое поле? :)))

    Утром - деньги, вечером - стулья.

    --
    Regards, LVT.
  • memphis007 © (02.08.07 21:04) [13]
    Малнько подправил текст:

    SendMessage(f, WM_LBUTTONDOWN, MK_LBUTTON, 0);
    SendMessage(f, WM_LBUTTONUP, MK_LBUTTON, 0);

  • memphis007 © (02.08.07 21:05) [14]

    > Утром - деньги, вечером - стулья

    :))) Пока и денег нету :)))
  • Leonid Troyanovsky © (02.08.07 21:06) [15]

    > Dib@zol ©   (02.08.07 16:06) [9]

    > И нам исходничок кинь как оплату за труды ;)))

    Исходнее - вам, а оплату - нам.

    --
    Regards, LVT.
  • Leonid Troyanovsky © (02.08.07 21:07) [16]

    > memphis007 ©   (02.08.07 21:05) [14]

    > > Утром - деньги, вечером - стулья
    >
    > :))) Пока и денег нету :)))

    Нет денег - нет стульев.

    --
    Regards, LVT.
  • Инс © (02.08.07 21:16) [17]

    > Нет денег - нет стульев.


    - Мама, мама, дай мне конфетку!
    - Возьми, доченька
    - Ну ведь она же на столе!
    - Ну так возьми со стола!
    - Но у меня ведь нет ножек!
    - Нет ножек - нет конфетки.
  • Dib@zol © (02.08.07 21:58) [18]
    > [17] Инс ©   (02.08.07 21:16)

    Садюга...
  • memphis007 © (02.08.07 22:33) [19]
    Вобщем, все идет своим чередом, только вот какая проблема возникла...
    Я посмотрел иерархию нужной мне проги (в которую я буду вставлять текст), дак вот, чтобы добраться до нужного мне контрола нада через кучу парентов пройти...
    Проблема:
    FindWindowEx находит первый хэндл (по классу), а тама два контрола с одинаковыми классами без каких либо других отличительных знаков...

    Как мне получить хендл второго контрола?
  • Leonid Troyanovsky © (03.08.07 10:02) [20]

    > memphis007 ©   (02.08.07 22:33) [19]

    > FindWindowEx находит первый хэндл (по классу), а тама два
    > контрола с одинаковыми классами без каких либо других отличительных

    Иногда контролам присваивают идентификаторы, которые можно считать
    путем GetDlgCtrlID. Однако, в общем случае, для идентификации контролов
    придется удовлетворяться их z-order, например, порядком их нахождения
    FWE, или их координатами на паренте.
    {Конечно, в случае, если эти характеристики воспроизводимы, т.е. их
    порядок или координаты не меняются при каждом запуске или в ходе
    работы}.

    --
    Regards, LVT.
  • имя (06.12.07 11:32) [21]
    Удалено модератором
  • имя (06.12.07 14:24) [22]
    Удалено модератором
  • имя (27.12.07 00:36) [23]
    Удалено модератором
 
Конференция "WinAPI" » Использование WinAPI для взаимодействия с другими приложениями [D7, WinXP]
Есть новые Нет новых   [134431   +14][b:0][p:0.001]