![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Работа с компонентами стороннего приложения [D7, WinXP]
imprezident © (2009-05-29 01:36:00)Добрый день!
У меня такой вопрос:
Необходимо написать программу, эмулирующую деятельность человека в клиентском окне онлайн приложения(по простому бот). Так вот, сама программа уже написана.Теперь необходимо что бы она эту самую эмуляцию производила(читала текст из поля оень похожего на мемо, вставляла свой в эдит, нажимала на кнопки). Пока вижу 2 решения:
1 Полностью сэмулировать клиент, тоесть засниффить весь получаемый и передаваемый им траффик. Каким то образом привести его в читаемый вид(слабо представляю конечно, но думаю что он не открытым текстом идет). И работать уже с моей программой.
2 Реальное эмулирование нажатий клавиш в существующем клиенте. С WinApi знаком слабо(даж не знаю что подключать нужно:)), но думаю что делать нужно через него. Почитал форум что нужно как-то вычленить заголовок(Handler) этого клиентского окна(у него могут быть дочерние окна) и затем уже через этот заголовок получать доступ к компонентам.
Так вот, хотелось бы узнать, как это все делается, желательно общий алгоритм для начала. Ну и пример кода бы очень не помешал. Думаю что на форуме что-то подобное уже обсуждалось, но так как слабо понимаю, то ничего конкретного не нашел. Если не сложно, ткните носом :)
Германн (2009-09-29 19:39:00) [1]
> и порадовался за Riply, ставшей в ряду достойных модератором.
>
>
> Оперились наши птенцы :)
> Саше - наши пожелания всяческих успехов!
+1
Leonid Troyanovsky (2009-09-29 19:05:00) [2]
> imprezident (28.09.09 17:17) [23]
> Выкладывать наверное не стоит, а вот если бы на мыло кинуть
Вот как народ обленился.
Могу извинить лишь неточным названием, видимо, имелся в виду
бессмертный SndKeys32.pas by Ken Henderson.
Любопытно, что разыскивая уточненные версии (бо, изначальная
была просто торопливо портирована из 16 битной, и работала
подобающе лишь в win95), я заглянул на http://forum.sources.ru
и порадовался за Riply, ставшей в ряду достойных модератором.
Оперились наши птенцы :)
Саше - наши пожелания всяческих успехов!
--
Regards, LVT.
imprezident (2009-09-28 17:17:00) [3]Выкладывать наверное не стоит, а вот если бы на мыло кинуть - идеально! :)
brother (2009-09-07 04:50:00) [4]> для эмуляции нажатий кнопки можно использовать модуль SendKeys32.pas
> (если нужно выложу)
а вот это уже перебор...
Ruzzz (2009-09-06 16:56:00) [5]для эмуляции нажатий кнопки можно использовать модуль SendKeys32.pas (если нужно выложу) - находишь нужное окно черех FindWindow, устанавливаешь на него фокус и посылаешь нужные нажатия клавишь. Это не полное решение конечно, но возможно как часть решения пригодится.
(2009-09-03 21:11:00) [6]Удалено модератором
Германн (2009-05-30 01:27:00) [7]
> imprezident (29.05.09 22:41) [16]
>
> to Игорь Шевченко
> Скачал Петцольда. Слабо понял при чем здесь он. :) Обычная
> книга по программированию на С. А мне вроде нужно WinApi
> для Delpi.
А все книги по WinAPI, как правило, нм Си. И тут уж либо самострел, либо...
Игорь Шевченко (2009-05-30 01:13:00) [8]imprezident (29.05.09 22:41) [16]
Рихтер в основном про потоки и процессы, а Петцольд больше про окна интерфейсные элементы в них.
Прочитаешь и того и другого - будешь вдвое умней.
GanibalLector (2009-05-29 23:02:00) [9]2 imprezident
Кстати, в Рихтере тоже ни слова о Delphi. Но это WinApi...а оно одинаково, что для Си , что для Delphi. Привыкай ;)
imprezident (2009-05-29 22:41:00) [10]to GanibalLector
Спасибо
to Игорь Шевченко
Скачал Петцольда. Слабо понял при чем здесь он. :) Обычная книга по программированию на С. А мне вроде нужно WinApi для Delpi. Есть там конечно немного про потоки и процессы, но быстренько пролистав, мне показалось, что ничего нового не узнаю. А почему Рихтера не читать? Я начал, а теперь боюс, вдруг нельзя :)))
Игорь Шевченко (2009-05-29 21:52:00) [11]Не надо читать Рихтера, надо читать Чарльза Петцольда, причем, для Windows 95 (если он с тех пор написал что-то про новые версии, то оно лучше). Книжку так по-моему и звать - "Программирование для Windows"
GanibalLector (2009-05-29 20:41:00) [12]2 imprezident
Дж.Рихтер "Windows для профессионалов".
Там целая глава посвещена сообщениям
imprezident (2009-05-29 20:12:00) [13]Кстати, программа действительно очень интересная.
imprezident (2009-05-29 20:08:00) [14]Может посоветуешь какую нибудь книжицу. Просто не хочется прочитать первую попавшуюся в нете на 600 страниц, чтобы понять что книга г.. и все равно ниче не понятно.
GanibalLector (2009-05-29 19:56:00) [15]Кстати, попробуй Window Scanner ( http://s0m.narod.ru/iws.html) .
Наиболее удобный из виденных мною. Очень удобный ;)
Да и остальные утилитки заслуживают внимания.
GanibalLector (2009-05-29 19:51:00) [16]> А можно ли в этих параметрах получать что-то. Я думаю через них и нужно получать текст из ричэдита.
Можно. Но для твоих целей подойдет вариант послать окну(ричэдита) сообщение выделить все, затем скопировать все. Ну...и в буфере окажется желаемое.
> В чем разница между именем окна и дискриптором окна.
Ищешь(FindWindow) по имени(главную форму) получаешь хендл. Затем ищешь (FindWindowEx) далее, указывая хендл главной формы и имени новой. Опять получаешь хендл. Затем опять FindWindowEx ... и т.д.
Блин, ты бы посмотрел в книге или в инете. Все ж описано и примеров полно
imprezident (2009-05-29 19:49:00) [17]А нет, это были минуты :)
imprezident (2009-05-29 19:41:00) [18]Ого, лучшим форум, который я видел)) GanibalLector ответил за 14 секунд!!!Спасибо
> 1) Параметры. Левый и правый. Можешь передавать в них что
> угодно (числа, структуры и т.д.)
А можно ли в этих параметрах получать что-то. Я думаю через них и нужно получать текст из ричэдита.
> 2) FindWindow,FindWindowEx
А вот тут я совсем запутался. В чем разница между именем окна и дискриптором окна. Чтобы воспользоваться FindWindow, мне нужно имя окна, которое как раз меняется и которое мне нужно найти, так?
GanibalLector (2009-05-29 19:30:00) [19]>Что такое wParam и lParam?
1) Параметры. Левый и правый. Можешь передавать в них что угодно (числа, структуры и т.д.)
2) FindWindow,FindWindowEx
imprezident (2009-05-29 19:16:00) [20]Тааак вот это уже очень интересно.
Пол дня мучаю этот SpyXX. Кое-что стало понятно. Но появился миллион других вопросов.
> Для начала следует выяснить, имеет ли интересующий контрол
> собственное окно.
>
Если я навожу FindTool из SpyXX на нужные контролы, они обводятся рамкой и по ним выдается информация: имя окна, текст, класс, стиль и т. д. Из чего я сделал вывод, что интересующие контролы имеют каждый свое окно.
Далее нам необходимо посмотреть какое сообщение идет при нужном нам действии с этим контролом и вставить все это в SendMessage(Handle,Message,wParam,lParam).
Вроде бы все просто, но тут и возникают вопросы. По пунктам:
1 Что такое wParam и lParam?
2 Как нам программно распознать имя окна, ведь при перезапуске приложения оно постоянно меняется? И если я в программе вставлю имя которое мне выдал спай, то при повторном запуске ничего не заработает.
3 Что дает стиль(style) окна?
4 Можно ли по классу окна определить какие галочки выставлять в Message Group. Например: есть поле(которое напоминает мемо, по сути это чат), спай его определил как RichEdit20W. Я ставлю галку Edit Field. Но при появлении в нем нового текста спай выдает только сообщения перевода каретки на новую строку. Также есть кнопка класса AfxWnd42u. Но при отслеживании сообщений из группы Button она ничего не показывает
5 Как читать тект из контрола предыдущего вопроса(RichEdit20W)?
Заранее спасибо!