Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Работа с компонентами стороннего приложения [D7, WinXP]


Страницы:   1 2

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)?
Заранее спасибо!


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо