Форум: "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