Russian Qt Forum

Qt => Общие вопросы => Тема начата: nightpirat от Октябрь 10, 2009, 10:38



Название: Программная эмуляция чтения данных приложения
Отправлено: nightpirat от Октябрь 10, 2009, 10:38
Доброго всем дня. Возможно название темы я не совсем точно сформулировал, вобщем проблема в следующем: есть стороннее приложение, задача научится читать данные с этого приложения, а также обрабатывая данные в своей программе нажимать на соответствующие кнопки в приложении. Немного поясню, допустим есть приложение А, которое я сам запускаю, но исходный код его мне не известен. Пусть А обрабатывает некий файл и после обработки выдаёт сообщение-файл такой-то обработан. Далее я жмякаю кнопку обработать следующий файл или если предыдущий файл "не обработался" выбираю другой алгоритм обработки из списка и пытаюсь обработать этим алгоритмом. Так как действия чисто механические, то хотелось бы написать программу, которая всё это будет делать за меня, вопрос каким образом в QT можно это реализовать и возможно ли это сделать вообще?
p.s. всем заранее спасибо за ответы, если чего непонятно, то спрашивайте.


Название: Re: Программная эмуляция чтения данных приложения
Отправлено: alexis031182 от Октябрь 10, 2009, 10:51
Каким образом программа А выдаёт сообщение об окончании обработки файла? Это графическое приложение? Если так, то вряд ли здесь что-то можно соорудить.


Название: Re: Программная эмуляция чтения данных приложения
Отправлено: lighting от Октябрь 10, 2009, 11:04
Посмотри вот эту (http://www.google.ru/search?hl=ru&lr=&newwindow=1&ei=ej_QSrfILseQ-AbC3Nj6Ag&sa=X&oi=spell&resnum=0&ct=result&cd=1&ved=0CAYQBSgA&q=injection+ultima&spell=1) программу. Вообще-то она для автоматизации управления персонажем в Ultima online, но возможно в твоем случае тоже сгодится, она достаточно продвинутая в плане настроек.


Название: Re: Программная эмуляция чтения данных приложения
Отправлено: nightpirat от Октябрь 10, 2009, 11:20
alexis031182: Программа А графическое, имеет обычное поле TextEdit и в нём выдаёт сообщение: обработка закончена.
lighting: спасибо посмотрю, но всёравно хотелось бы знать если какие-нибудь клаасы в QT обработки сообщений, которое посылает другое приложение. Ведь оно я так понимаю при работе с файлом обращается к нему, т.е. посылет некое сообщение винде....


Название: Re: Программная эмуляция чтения данных приложения
Отправлено: lit-uriy от Октябрь 10, 2009, 12:23
Эту тему правильнее назвать "Автоматизация работы с приложением"
См.:
AutoIt (http://www.autoitscript.com/autoit3/) - позволяет писать сценарии автоматизации работы с приложением
AutoHotkey (http://www.autohotkey.com/) - аналогично, но я ни разу не работал


Название: Re: Программная эмуляция чтения данных приложения
Отправлено: nightpirat от Октябрь 10, 2009, 12:34
lit-uriy: спасибо, будем пробовать, обязательно отпишусь если чего-нибудь получится :)
я вот кстати порывшись в интернете нашёл, что всё это можно сделать с помощью dll injection ... http://www.xakep.ru/post/28092/default.asp (http://www.xakep.ru/post/28092/default.asp)


Название: Re: Программная эмуляция чтения данных приложения
Отправлено: nightpirat от Октябрь 11, 2009, 01:36
Как и обещал отписываюсь по AutoIt - всё вышеперечисленное удалось реализовать на внутреннем языке этой незамысловатой программы. Что сказать, очень большой плюс, что к ней есть документация на русском. Из минусов, поиск нужного в этой документации - то ещё занятие(кто ж знал, что конкатенация строк это "&" вместо привычного "+"-час наверное справку рыл вместе с интернетом, пока не угадал :)). Ещё по какой-то неведомой мне причине данная програ игнорирует всё , что находится в окне QT приложения(пишет , что окно Qвиджет и всё, ни одного батона или текст эдита не видит).Выкрутился эмуляцией нажатия кнопок мыши и копированием нужного в буфер обмена. Вобщем, если у кого будут вопросы, то пишите. Тема считаю хоть и не до конца, но раскрыта. Хотелось бы знать есть ли нечто подобное в самом QT?
p.s. Внутренний язык AutoIt  довольно скудный, но в то же время он полностью охватывает все заявленные в программе функции.


Название: Re: Программная эмуляция чтения данных приложения
Отправлено: lit-uriy от Октябрь 11, 2009, 08:55
>>что окно Qвиджет и всё, ни одного батона или текст эдита не видит
Тут дело в том, что Qt сама рисует виджеты, а не пользуется ВинАПИшными. Вот чужеродная програ, заточенная под ВинАПИ их и не видит.


Название: Re: Программная эмуляция чтения данных приложения
Отправлено: nightpirat от Октябрь 11, 2009, 15:00
:) я так и думал...ну что-же будем по цвету пикселей определять где батон а где текст эдит, благо это очень просто