Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2012.01.22;
Скачать: [xml.tar.bz2];

Вниз

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

 
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 вся ветка

Форум: "WinAPI";
Текущий архив: 2012.01.22;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.52 MB
Время: 0.003 c
15-1317846605
Юрий
2011-10-06 00:30
2012.01.22
С днем рождения ! 6 октября 2011 четверг


2-1318317392
алешка
2011-10-11 11:16
2012.01.22
Значение в ячейке


2-1318309519
vivaldi
2011-10-11 09:05
2012.01.22
Преобразование цвета оттенки серого в черно-белый


3-1270289204
prezervogaz
2010-04-03 14:06
2012.01.22
Кодировка параметров SQL-запросов


15-1318010585
Android Master
2011-10-07 22:03
2012.01.22
Ищу форум по программированию Андроида.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский