-
Добрый день! У меня такой вопрос: Необходимо написать программу, эмулирующую деятельность человека в клиентском окне онлайн приложения(по простому бот). Так вот, сама программа уже написана.Теперь необходимо что бы она эту самую эмуляцию производила(читала текст из поля оень похожего на мемо, вставляла свой в эдит, нажимала на кнопки). Пока вижу 2 решения: 1 Полностью сэмулировать клиент, тоесть засниффить весь получаемый и передаваемый им траффик. Каким то образом привести его в читаемый вид(слабо представляю конечно, но думаю что он не открытым текстом идет). И работать уже с моей программой. 2 Реальное эмулирование нажатий клавиш в существующем клиенте. С WinApi знаком слабо(даж не знаю что подключать нужно:)), но думаю что делать нужно через него. Почитал форум что нужно как-то вычленить заголовок(Handler) этого клиентского окна(у него могут быть дочерние окна) и затем уже через этот заголовок получать доступ к компонентам. Так вот, хотелось бы узнать, как это все делается, желательно общий алгоритм для начала. Ну и пример кода бы очень не помешал. Думаю что на форуме что-то подобное уже обсуждалось, но так как слабо понимаю, то ничего конкретного не нашел. Если не сложно, ткните носом :)
-
> в клиентском окне онлайн приложения
С чего ты взял, что это приложение дельфийское ?
-
Так оно и не дельфийское 100 %, а вот то оторое я пишу - оно на делфи.
-
> Так оно и не дельфийское 100 %
Так о каких же тогда "компонентах" может идти речь, если оно не дельфийское ?
Визуальный контрол, видимый тобой в каком-то "чужом" окне и дельфийский визуальный компонент - это далеко не одно и то же.
-
Нууу... поэтому и пользуем ВинАпи. Правильно я думаю? Они же стандартны. И хеадеры имеют стандартный вид в Винде, если я все правильно понимаю. Вот как быть с самим, как ты говоришь, визуальным контролом. Неужели нет способа его прочитать? М б читать его из оперативы, как например делает многим мзвестная ArtMoney.
-
> поэтому и пользуем ВинАпи. Правильно я думаю?
Думаешь-то правильно, а вот обзываешь эти контролы "компонентами" неправильно.
> Вот как быть с самим, как ты говоришь, визуальным контролом
Для начала следует выяснить, имеет ли интересующий контрол собственное окно. Работу следует начинать с детального исследования "жертвы" средствами, например, утилиты SpyXX.exe из состава MS VisualStudio.
-
Тааак вот это уже очень интересно. Пол дня мучаю этот SpyXX. Кое-что стало понятно. Но появился миллион других вопросов.
> Для начала следует выяснить, имеет ли интересующий контрол > собственное окно. >
Если я навожу FindTool из SpyXX на нужные контролы, они обводятся рамкой и по ним выдается информация: имя окна, текст, класс, стиль и т. д. Из чего я сделал вывод, что интересующие контролы имеют каждый свое окно. Далее нам необходимо посмотреть какое сообщение идет при нужном нам действии с этим контролом и вставить все это в SendMessage(Handle,Message,wParam,lParam). Вроде бы все просто, но тут и возникают вопросы. По пунктам: 1 Что такое wParam и lParam? 2 Как нам программно распознать имя окна, ведь при перезапуске приложения оно постоянно меняется? И если я в программе вставлю имя которое мне выдал спай, то при повторном запуске ничего не заработает. 3 Что дает стиль(style) окна? 4 Можно ли по классу окна определить какие галочки выставлять в Message Group. Например: есть поле(которое напоминает мемо, по сути это чат), спай его определил как RichEdit20W. Я ставлю галку Edit Field. Но при появлении в нем нового текста спай выдает только сообщения перевода каретки на новую строку. Также есть кнопка класса AfxWnd42u. Но при отслеживании сообщений из группы Button она ничего не показывает 5 Как читать тект из контрола предыдущего вопроса(RichEdit20W)? Заранее спасибо!
-
>Что такое wParam и lParam? 1) Параметры. Левый и правый. Можешь передавать в них что угодно (числа, структуры и т.д.) 2) FindWindow,FindWindowEx
-
Ого, лучшим форум, который я видел)) GanibalLector ответил за 14 секунд!!!Спасибо
> 1) Параметры. Левый и правый. Можешь передавать в них что > угодно (числа, структуры и т.д.)
А можно ли в этих параметрах получать что-то. Я думаю через них и нужно получать текст из ричэдита.
> 2) FindWindow,FindWindowEx
А вот тут я совсем запутался. В чем разница между именем окна и дискриптором окна. Чтобы воспользоваться FindWindow, мне нужно имя окна, которое как раз меняется и которое мне нужно найти, так?
-
А нет, это были минуты :)
-
> А можно ли в этих параметрах получать что-то. Я думаю через них и нужно получать текст из ричэдита. Можно. Но для твоих целей подойдет вариант послать окну(ричэдита) сообщение выделить все, затем скопировать все. Ну...и в буфере окажется желаемое. > В чем разница между именем окна и дискриптором окна. Ищешь(FindWindow) по имени(главную форму) получаешь хендл. Затем ищешь (FindWindowEx) далее, указывая хендл главной формы и имени новой. Опять получаешь хендл. Затем опять FindWindowEx ... и т.д. Блин, ты бы посмотрел в книге или в инете. Все ж описано и примеров полно
-
Кстати, попробуй Window Scanner ( http://s0m.narod.ru/iws.html) . Наиболее удобный из виденных мною. Очень удобный ;) Да и остальные утилитки заслуживают внимания.
-
Может посоветуешь какую нибудь книжицу. Просто не хочется прочитать первую попавшуюся в нете на 600 страниц, чтобы понять что книга г.. и все равно ниче не понятно.
-
Кстати, программа действительно очень интересная.
-
2 imprezident Дж.Рихтер "Windows для профессионалов". Там целая глава посвещена сообщениям
-
Не надо читать Рихтера, надо читать Чарльза Петцольда, причем, для Windows 95 (если он с тех пор написал что-то про новые версии, то оно лучше). Книжку так по-моему и звать - "Программирование для Windows"
-
to GanibalLector Спасибо
to Игорь Шевченко Скачал Петцольда. Слабо понял при чем здесь он. :) Обычная книга по программированию на С. А мне вроде нужно WinApi для Delpi. Есть там конечно немного про потоки и процессы, но быстренько пролистав, мне показалось, что ничего нового не узнаю. А почему Рихтера не читать? Я начал, а теперь боюс, вдруг нельзя :)))
-
2 imprezident Кстати, в Рихтере тоже ни слова о Delphi. Но это WinApi...а оно одинаково, что для Си , что для Delphi. Привыкай ;)
-
imprezident (29.05.09 22:41) [16]
Рихтер в основном про потоки и процессы, а Петцольд больше про окна интерфейсные элементы в них.
Прочитаешь и того и другого - будешь вдвое умней.
-
> imprezident (29.05.09 22:41) [16] > > to Игорь Шевченко > Скачал Петцольда. Слабо понял при чем здесь он. :) Обычная > книга по программированию на С. А мне вроде нужно WinApi > для Delpi.
А все книги по WinAPI, как правило, нм Си. И тут уж либо самострел, либо...
|