Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2012.01.22;
Скачать: CL | DM;

Вниз

Работа с компонентами стороннего приложения   Найти похожие ветки 

 
imprezident   (2009-05-29 01:36) [0]

Добрый день!
У меня такой вопрос:
Необходимо написать программу, эмулирующую деятельность человека в клиентском окне онлайн приложения(по простому бот). Так вот, сама программа уже написана.Теперь необходимо что бы она эту самую эмуляцию производила(читала текст из поля оень похожего на мемо, вставляла свой в эдит, нажимала на кнопки). Пока вижу 2 решения:
1 Полностью сэмулировать клиент, тоесть засниффить весь получаемый и передаваемый им траффик. Каким то образом привести его в читаемый вид(слабо представляю конечно, но думаю что он не открытым текстом идет). И работать уже с моей программой.
2 Реальное эмулирование нажатий клавиш в существующем клиенте. С WinApi знаком слабо(даж не знаю что подключать нужно:)), но думаю что делать нужно через него. Почитал форум что нужно как-то вычленить заголовок(Handler) этого клиентского окна(у него могут быть дочерние окна) и затем уже через этот заголовок получать доступ к компонентам.
Так вот, хотелось бы узнать, как это все делается, желательно общий алгоритм для начала. Ну и пример кода бы очень не помешал. Думаю что на форуме что-то подобное уже обсуждалось, но так как слабо понимаю, то ничего конкретного не нашел. Если не сложно, ткните носом :)


 
Сергей М. ©   (2009-05-29 08:35) [1]


> в клиентском окне онлайн приложения


С чего ты взял, что это приложение дельфийское ?


 
imprezident   (2009-05-29 09:37) [2]

Так оно и не дельфийское 100 %, а вот то оторое я пишу - оно на делфи.


 
Сергей М. ©   (2009-05-29 09:41) [3]


> Так оно и не дельфийское 100 %


Так о каких же тогда "компонентах" может идти речь, если оно не дельфийское ?

Визуальный контрол, видимый тобой в каком-то "чужом" окне и дельфийский визуальный компонент - это далеко не одно и то же.


 
imprezident   (2009-05-29 10:03) [4]

Нууу... поэтому и пользуем ВинАпи. Правильно я думаю?
Они же стандартны. И хеадеры имеют стандартный вид в Винде, если я все правильно понимаю. Вот как быть с самим, как ты говоришь, визуальным контролом. Неужели нет способа его прочитать? М б читать его из оперативы, как например делает многим мзвестная ArtMoney.


 
Сергей М. ©   (2009-05-29 10:18) [5]


> поэтому и пользуем ВинАпи. Правильно я думаю?


Думаешь-то правильно, а вот обзываешь эти контролы "компонентами" неправильно.


> Вот как быть с самим, как ты говоришь, визуальным контролом


Для начала следует выяснить, имеет ли интересующий контрол собственное окно.
Работу следует начинать с детального исследования "жертвы" средствами, например, утилиты SpyXX.exe из состава MS VisualStudio.


 
imprezident   (2009-05-29 19:16) [6]

Тааак вот это уже очень интересно.
Пол дня мучаю этот SpyXX. Кое-что стало понятно. Но появился миллион других вопросов.

> Для начала следует выяснить, имеет ли интересующий контрол
> собственное окно.
>


Если я навожу FindTool из SpyXX на нужные контролы, они обводятся рамкой и по ним выдается информация: имя окна, текст, класс, стиль и т. д. Из чего я сделал вывод, что интересующие контролы имеют каждый свое окно.
Далее нам необходимо посмотреть какое сообщение идет при нужном нам действии с этим контролом и вставить все это в SendMessage(Handle,Message,wParam,lParam).
Вроде бы все просто, но тут и возникают вопросы. По пунктам:
1  Что такое wParam и lParam?
2  Как нам программно распознать имя окна, ведь при перезапуске приложения оно постоянно меняется? И если я в программе вставлю имя которое мне выдал спай, то при повторном запуске ничего не заработает.
3  Что дает стиль(style) окна?
4  Можно ли по классу окна определить какие галочки выставлять в Message Group. Например: есть поле(которое напоминает мемо, по сути это чат), спай его определил как RichEdit20W. Я ставлю галку Edit Field. Но при появлении в нем нового текста спай выдает только сообщения перевода каретки на новую строку. Также есть кнопка класса AfxWnd42u. Но при отслеживании сообщений из группы Button она ничего не показывает
5  Как читать тект из контрола предыдущего вопроса(RichEdit20W)?
Заранее спасибо!


 
GanibalLector ©   (2009-05-29 19:30) [7]

>Что такое wParam и lParam?

1) Параметры. Левый и правый. Можешь передавать в них что угодно (числа, структуры и т.д.)
2) FindWindow,FindWindowEx


 
imprezident   (2009-05-29 19:41) [8]

Ого, лучшим форум, который я видел)) GanibalLector ответил за 14 секунд!!!Спасибо

> 1) Параметры. Левый и правый. Можешь передавать в них что
> угодно (числа, структуры и т.д.)

А можно ли в этих параметрах получать что-то. Я думаю через них и нужно получать текст из ричэдита.

> 2) FindWindow,FindWindowEx

А вот тут я совсем запутался. В чем разница между именем окна и дискриптором окна. Чтобы воспользоваться FindWindow, мне нужно имя окна, которое как раз меняется и которое мне нужно найти, так?


 
imprezident   (2009-05-29 19:49) [9]

А нет, это были минуты :)


 
GanibalLector ©   (2009-05-29 19:51) [10]

> А можно ли в этих параметрах получать что-то. Я думаю через них и нужно получать текст из ричэдита.

Можно. Но для твоих целей подойдет вариант послать окну(ричэдита) сообщение выделить все, затем скопировать все. Ну...и в буфере окажется желаемое.

> В чем разница между именем окна и дискриптором окна.

Ищешь(FindWindow) по имени(главную форму) получаешь хендл. Затем ищешь (FindWindowEx) далее, указывая хендл главной формы и имени новой. Опять получаешь хендл. Затем опять  FindWindowEx ... и т.д.

Блин, ты бы посмотрел в книге или в инете. Все ж описано и примеров полно


 
GanibalLector ©   (2009-05-29 19:56) [11]

Кстати, попробуй Window Scanner ( http://s0m.narod.ru/iws.html) .
Наиболее удобный из виденных мною. Очень удобный ;)

Да и остальные утилитки заслуживают внимания.


 
imprezident   (2009-05-29 20:08) [12]

Может посоветуешь какую нибудь книжицу. Просто не хочется прочитать первую попавшуюся в нете на 600 страниц, чтобы понять что книга г.. и все равно ниче не понятно.


 
imprezident   (2009-05-29 20:12) [13]

Кстати, программа действительно очень интересная.


 
GanibalLector ©   (2009-05-29 20:41) [14]

2 imprezident

Дж.Рихтер "Windows для профессионалов".
Там целая глава посвещена сообщениям


 
Игорь Шевченко ©   (2009-05-29 21:52) [15]

Не надо читать Рихтера, надо читать Чарльза Петцольда, причем, для Windows 95 (если он с тех пор написал что-то про новые версии, то оно лучше). Книжку так по-моему и звать - "Программирование для Windows"


 
imprezident   (2009-05-29 22:41) [16]

to GanibalLector
Спасибо

to Игорь Шевченко
Скачал Петцольда. Слабо понял при чем здесь он. :) Обычная книга по программированию на С. А мне вроде нужно WinApi для Delpi. Есть там конечно немного про потоки и процессы, но быстренько пролистав, мне показалось, что ничего нового не узнаю. А почему Рихтера не читать? Я начал, а теперь боюс, вдруг нельзя :)))


 
GanibalLector ©   (2009-05-29 23:02) [17]

2 imprezident

Кстати, в Рихтере тоже ни слова о Delphi. Но это WinApi...а оно одинаково, что для Си , что для Delphi. Привыкай ;)


 
Игорь Шевченко ©   (2009-05-30 01:13) [18]

imprezident   (29.05.09 22:41) [16]

Рихтер в основном про потоки и процессы, а Петцольд больше про окна интерфейсные элементы в них.

Прочитаешь и того и другого - будешь вдвое умней.


 
Германн ©   (2009-05-30 01:27) [19]


> imprezident   (29.05.09 22:41) [16]
>
> to Игорь Шевченко
> Скачал Петцольда. Слабо понял при чем здесь он. :) Обычная
> книга по программированию на С. А мне вроде нужно WinApi
> для Delpi.

А все книги по WinAPI, как правило, нм Си. И тут уж либо самострел, либо...


 
имя   (2009-09-03 21:11) [20]

Удалено модератором


 
Ruzzz   (2009-09-06 16:56) [21]

для эмуляции нажатий кнопки можно использовать модуль SendKeys32.pas (если нужно выложу) - находишь нужное окно черех FindWindow, устанавливаешь на него фокус и посылаешь нужные нажатия клавишь. Это не полное решение конечно, но возможно как часть решения пригодится.


 
brother ©   (2009-09-07 04:50) [22]

> для эмуляции нажатий кнопки можно использовать модуль SendKeys32.pas
> (если нужно выложу)

а вот это уже перебор...


 
imprezident   (2009-09-28 17:17) [23]

Выкладывать наверное не стоит, а вот если бы на мыло кинуть - идеально! :)


 
Leonid Troyanovsky ©   (2009-09-29 19:05) [24]


> imprezident   (28.09.09 17:17) [23]

> Выкладывать наверное не стоит, а вот если бы на мыло кинуть

Вот как народ обленился.

Могу извинить лишь неточным названием, видимо, имелся в виду
бессмертный SndKeys32.pas by Ken Henderson.

Любопытно, что разыскивая уточненные версии (бо, изначальная
была просто торопливо портирована из 16 битной, и работала
подобающе лишь в win95), я заглянул на http://forum.sources.ru
и порадовался за Riply, ставшей в ряду достойных модератором.

Оперились наши птенцы :)
Саше - наши пожелания всяческих успехов!

--
Regards, LVT.


 
Германн ©   (2009-09-29 19:39) [25]


> и порадовался за Riply, ставшей в ряду достойных модератором.
>
>
> Оперились наши птенцы :)
> Саше - наши пожелания всяческих успехов!

+1



Страницы: 1 вся ветка

Текущий архив: 2012.01.22;
Скачать: CL | DM;

Наверх




Память: 0.53 MB
Время: 0.01 c
15-1317445057
Gtxfnm
2011-10-01 08:57
2012.01.22
Печать больших форматов на А4


15-1317719782
Сергій
2011-10-04 13:16
2012.01.22
Допоможіть розібратись!!! Будь-ласка...


2-1318237920
NBAH1990
2011-10-10 13:12
2012.01.22
Программная настройка подключения по локальной сети


2-1316590175
alexis
2011-09-21 11:29
2012.01.22
Выгрузка данных из TDataSet в XML


4-1253815783
uinor
2009-09-24 22:09
2012.01.22
GUI & Console