Форум » GUI » Как считать данные в GET из другой программы ? » Ответить

Как считать данные в GET из другой программы ?

Andrey: Всем привет. Мне нужно считать данные находящиеся в GET другой программы. Нашел на Дельфи как это делать http://www.oivt.ru/blog/delfi-poluchenie-teksta-iz-chuzhogo-okna Как это сделать на МиниГуи ? hWnd := FindWindowEx(,,, "Ammyy Admin v3.5 - Free" ) // .......... А дальше как ?

Ответов - 20

SergKis: Andrey пишет:Как это сделать на МиниГуи ? если обе проги MiniGui и твои, то обмен можно организовать по посылке WM_COPYDATA (запрос\ответ). если другая прога, то можно пойти по пути как в AutoIt3, Au3Info.exe позволяет снять данные с конролов проги (если разберет их) и используя их (данные) в скрипрте AutoIt3 организовать доступ к контролам (чтение\запись), надо знать как повторить это на winapi, для использования в hb

fil: Вероятно - getwindowtext(hEdt) Если не получится, то через SendMessage

Andrey: fil пишет: Вероятно - getwindowtext(hEdt) Если не получится, то через SendMessage А как конкретно ? hWnd := FindWindowEx(,,, "Ammyy Admin v3.5 - Free" ) // .......... А дальше как ?


fil: Ну ты же наше хендл этого get'a hWnd := FindWindowEx(,,, "Ammyy Admin v3.5 - Free" ) далее tt:=getwindowtext(hEdt) (ежели эта ф-я есть в МиниГуи) Иначе смотри в гугле как это делается через по сылку контролу SendMessage(hWnd, WM_GETTEXT

Dima: Andrey Примеры что ли глянь MiniGUI\SAMPLES\Advanced\ExternalApp\ MiniGUI\SAMPLES\Advanced\ExternalApp_2\

Andrey: Dima пишет: Примеры что ли глянь Спасибо ! То что нужно !

Andrey: Не совсем то. Не понятно как считать с окна. Нашёл вот тему: http://www.transl-gunsmoker.ru/2008/11/getwindowtext.html И пусть у нас есть процесс Б, у которого есть описатель окна (hwnd = MyControl.Handle), созданного процессом А (не важно, как он его получил): var szBuf: array[0..79] of Char; ... GetWindowText(hwnd, szBuf, 80); Этот код вернёт szBuf = 'Frappy', потому что это именно та строка, которая хранится в "особом месте". Однако: SendMessage(hwnd, WM_GETTEXT, 80, LPARAM(@szBuf)); Вернёт szBuf = 'Booga!'. Как понять LPARAM(@szBuf) ? Какой синтаксис для МиниГуи нужен ?

Dima: Andrey пишет: Не совсем то. Не понятно как считать с окна. Я конечно не спец но кажется мне что надо обойти все контролы нужного окна. Попробуй SendMessage(hwnd,WM_GETTEXT,250,@_string)

fil: Сначала находишь окно родителя hWnd:=FindWindow( Затем в нем FindWindowEx(hWnd перебираешь

Dima: Можно еще проще. Если нашел окно "Ammyy Admin v3.5 - Free" , затем Client ID читаем из реестра.

Andrey: Dima пишет: затем Client ID читаем из реестра. Как ?

Andrey: fil пишет: Сначала находишь окно родителя hWnd:=FindWindow( Затем в нем FindWindowEx(hWnd перебираешь Вот переделал пример Григория - https://cloud.mail.ru/public/aaf4a7178a58/ExternalApp_demo2.prg Не работает... Кстати в Win8 пример не работает (CAPTION 'Minimize/Maximize Notepad') ! Заголовок окна - "Безымянный — Блокнот", и в WinXP SP 3 тоже такой же заголовок, там тоже не работает.

Haz: Andrey пишет: Кстати в Win8 пример не работает ВСЕ работает. Чудес на свете не бывает, обратимся к "переработанному" исходнику FUNCTION MinimizeIt() ... IF ( n := aScan( aTitles, {|e| APP_TITLE_EN $ e[1] } ) ) > 0 ... теперь смотрим что определено #define APP_TITLE_EN 'Notepad' Как думаешь отреагирует AScan при сравнении 'Notepad' и 'Безымянный — Блокнот' ЗЫ Искать лучше не по Безымянный - Блокнот а просто 'Блокнот' т.е. в твоем примере конструкция aScan( aTitles, {|e| APP_TITLE_RU $ e[1] } ) - сработает

Andrey: Haz пишет: ВСЕ работает. Чудес на свете не бывает, обратимся к "переработанному" исходнику Понятно. А дальше как в ReadGetIt() ?

Andrey: Вот есть исходник на С++ для чтения ID. Как подключить его отдельной функцией к МиниГуи (то бишь Харбору) ? Или полностью переписать на МиниГуи, но там такие фунции в которых я не разбираюсь... https://gist.github.com/skynetxxx/f50524c07f121f47e9fc

Andrey: Разобрался я с этой проблемой. Вот текст, кому интересно. https://gist.github.com/VerchenkoAG/40c50f644459caa7ce3c Сделал отдельную ОДНУ программу для своего удаленного подключения к юзерам. Так как AA_v3.5.exe больше 500Кб (линкер BCC 5.5 не тянет в ресурсы), пришлось за архивировать zip-ом и включить в ресурсы к себе в программу, включил настройки этой проги тоже в ресурсы. Как троян получается... Зато ничего дополнительного тащить не надо. Теперь юзер одну кнопку тычет, ID-ник его ко мне на сайт приходит и я могу подключаться к нему. Вообще неплохая программа эта "Ammyy Admin v3.5 - Free", можно и лицензию купить.

Dima: Andrey пишет: Теперь юзер одну кнопку тычет, ID-ник его ко мне на сайт приходит и я могу подключаться к нему. Ну как бы ID можно передать по SMS , по трубе сказать , передать по ICQ , МайлРу агенту и тд и тп. По ходу на AMMI 3.2 не работает , ну это и понятно почему , так как cAppTitle := "Ammyy Admin v3.5 - Free" вшито. PS Проверил на TeamViewer - работает. Только нужно знать какую строку считать.

Andrey: Dima пишет: Ну как бы ID можно передать по SMS Я его еще на экран пользователю вывожу БОЛЬШИМИ ЦИФРАМИ !

Dima: Andrey пишет: Я его еще на экран пользователю вывожу БОЛЬШИМИ ЦИФРАМИ ! Это я понял и выводить можно чернобурофиолетовым. А смысл ?

Andrey: Dima пишет: А смысл ? Да юзера разные попадаются... Пока добьёшься от них нужных действий по телефону, готов прибить этого юзера... Коронная фраза от юзера: такого раньше не было... Из-за этого и делаешь всякую приблуду себе, чтобы не зависить от юзера. Себе нервы бережешь !



полная версия страницы