Пост в BEGINNERS не принес результатов, поэтому пишу сюда. ;--------------------------------------------------- Вопрос: Есть отдельное ПОЛНОЭКРАННОЕ OpenGL (есть вариант его и DirectX) приложение WIN32 (в частности WinXP). Необходимо нацарапать другую программку , отслеживающую цвет определенного пиксела на экране при работе энтого приложения (скажем, это игрушка). Есть еще момент. Это пиксел из ТЕКСТОВОЙ СТРОКИ, формируемой в зависимости от внешних данных. Может, можно отловить вызов этой программой wsprintf или SetTextColor или что-то подобное ? Если да, то можете хотя бы натолкнуть на мысль - HOW TO по пунктам? Спасибо заранее ! P.S Прочитал "Перехват API функций в Windows NT (часть 1). Основы перехвата. [Ms-Rem]", но реализация этого - хм...
Какую апи отлавливать надо я не знаю, так как написанием OpenGL приложений не занимался, посмотри это в соответствующих статьях. А о том, как отловить вызов апи читай 2 часть про перехват, в конце дана готовая библиотека для этого.
2Ms Rem . Как я понял, способ, описанный в Вашей статье - единственно возможный ? 2Avalonec - приложеньице-то чужое. GetDC чей контекст даст ? Да еще ОГЛ. Да еще full-screen,а при потере ФОКУСА тут же на паузу встает. во как . ;/
Normal Что требуется? - определять цвет конкретного пикселя на экране; или - определить текст выводимый на экран; Чем больше напишешь о задаче - тем болеше вероятность полезных ответов.
Normal Нет конечно, перехватить апи можно еще кучей других способов. Например можно использовать DebugAPI или изменять атрибуту памяти в PTE и работать в драйвере. Способов придумать можно много. Просто описанные способы наиболее просты и практичны в применении.
Normal М-да... Достаешь hwnd ища в процессах или WindowFromPoint. GetDC возвращает hdc для окна. Берешь цвет. В моих приложения OpenGL и DirectX все берется, что fullscreen, что в окошке.
2S_T_A_S_ определять требуется событие. Присутствие на дисплее текстовой строки опр. цвета в строго определенном месте говорит о том, что событие имеет место. Больше просто зацепиться не за что. 2Avalonec я пробовал так, но GetPixel возвращает не то, что есть на дисплее. к сожалению,у меня нет достаточно опыта чтобы узнать почему так происходит. Поэтому думаю, что можно SetTextColor перехватывать или Text Out etc...
Объясню как есть. Знаете игрушку к примеру CounterStrike. Прицел на враге. Около прицела - строка красного цвета "blablabla - enemy". Так вот смысл , чтобы ету строку распознать и сгенерить клик мышом или кейдаун. Врезультате - БАХ - попали. Это для борьбы с читерками полезно. А модифицировать прогу низзя, так как cервер совместно с чит-админом выкинет из игры. P.S. Если бы тока знать сетевой протокол, посредством которого CS работает....все было бы проще.
возвращает не то, что есть на дисплее Цвет может отличаться и "плавать" от режима 16 бит и 24. Поэтому это надо учитывать. Тебе к примеру нужно задать таймер и периодически читать цвет пикселя. Нужный COM метод directx ID3DXFont:rawTextA(W).
Normal Для начала попробуй в sice поставить бряк на ddraw!DD_Surface_Lock и ddraw!DD_Surface_Unlock4 если сработают - можно их хучить, и читать пиксели из видеопамяти каждый кадр. Правда придётся почитать про COM и DirectX Avalonec > Не факт, что используется версия интерфейса DX которая его содержит.