Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Как загрузить капчу из чужого приложения в своё
Форум программистов > Системное программирование > C, С++ и С Builder > Общие вопросы по С и С++
SaNn
Ну что форумчане, у меня к вам три очень интересных вопроса:

1. Как найти окно в котором МОЖЕТ распологаться картинка (приложение написано фиг знает на чём, там даже у чекбоксов тип баттон!!!)?
2. Как получить адрес (возможно URL, а возможно и нет) этой картинки?
3. Как загрузить эту картинку в своё приложение?

Зарание всем спасибо...
grigsoft
В общем случае - никак. надо смотреть на конкретное приложение, например настроить ее через свой прокси, или попытаться внедрившись в процесс найти где битмап лежит.
sax_ol
Цитата(SaNn @ 18:04:2008 - 23:33) *
там даже у чекбоксов тип баттон!!!
А каким он по вашему должен быть?
Yason
SaNn
Так картинка грузится с сервера или генерится локально? Показывается всегда в одном и том же контроле/месте окна, или где попало?
Решение для картинки, загружаемой извне, написал grigsoft.
Для генерируемой локально самим приложением - по заголовку получаем хендл окна, потом - GetWindowDC, потом BitBlt себе в битмап.
SaNn
В общем объясню что я хочу:
Мне захотелось написать свой spy для покера(Техас холдем), но как получить свои карты и карты флопа, тёрна и ривера я не знаю(((...
sax_ol
Мухлеж?
European
Цитата(SaNn @ 19:04:2008 - 21:07) *
Мне захотелось написать свой spy для покера

Это браузерный веб-клиент?
SaNn
Нет это не развод и не браузерный веб клиент...
В общем картинки лежат в папке с игрой...
European
Посмотри Spy-ем есть ли окна для отображения карт. Если нет, то узнать какая карта была отрисована, ИМХО, нельзя. Аспекты сравнения картинок я не рассматриваю.
grigsoft
А хоть бы и были? не представляю разумную внутреннюю логику, по которой карты можно было бы прочитать из окна до того как будет необходимость отрисовать их лицом вверх. Попробовать, конечно, можно, но, на мой взгляд, единственный шанс здесь - как с любыми компьютерными игрушками - внедрение, поиск фрагментов памяти с текущей раскладкой, анализ окружения чтобы выделить правила.

Или речь здесь идет просто об автоматизации легальной игры, а не о взломе? Тогда да, окна могут помочь, но и без них - покер вроде игра с несложной логикой вполне можно выделять фрагменты окна с картами для стандартных ситуаций
European
Цитата(grigsoft @ 21:04:2008 - 18:27) *
А хоть бы и были?

Без окон будет еще хуже smile.gif
Цитата(grigsoft @ 21:04:2008 - 18:27) *
не представляю разумную внутреннюю логику, по которой карты можно было бы прочитать из окна до того как будет необходимость отрисовать их лицом вверх.

Так ведь никто не говорит о получении карты до ее отрисовки. По крайней мере я так понял. В обратном случае без дизассемблирования ничего точно не выйдет.
Цитата(grigsoft @ 21:04:2008 - 18:27) *
покер вроде игра с несложной логикой вполне можно выделять фрагменты окна с картами для стандартных ситуаций

Если клиент позволяет играть переменному количеству человек (если в покере можно smile.gif ), позволяет настраивать скины карт, стола и т.д., то обрабатывать "стандартные ситуации" будет сложно


Цитата(SaNn @ 19:04:2008 - 21:07) *
и карты флопа, тёрна и ривера я не знаю(((...

Не разбираюсь в покере... Поясните что это за карты. Вы их явно не видите, так?
Цитата(SaNn @ 19:04:2008 - 21:07) *
но как получить свои карты

Ну с этим более-менее понятно, так как эти карты Вы видите
SaNn
Цитата
Или речь здесь идет просто об автоматизации легальной игры, а не о взломе? Тогда да, окна могут помочь, но и без них - покер вроде игра с несложной логикой вполне можно выделять фрагменты окна с картами для стандартных ситуаций

Именно!!!

Проверил, вроде какието окна есть, но их имени не могу получить, что сужественно уменьшило бы объём работы...
Yason
Имя наверняка есть у родительского (ну или главного) окна, а у искомых дочерних есть фиксированные координаты. Существенно уменьшит объём работы функция EnumChildWindows.
Upd: для изучения структуры чужих окон удобно использовать Spy++ из комплекта Visual Studio.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Русская версия IP.Board © 2001-2008 IPS, Inc.