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

Вниз

EnumSurfaces в контексте потока чужего процесса   Найти похожие ветки 

 
Torvald   (2005-10-19 18:23) [0]

Как, находясь в контексте потока чужего процесса (через hook), можно получить список всех Surfaces (IDirectDrawSurface) или же интерфейс IDirectDraw, если приложение использует DirectX?

И вообще возможно ли это сделать?
Я не знаток COM технологий и подавно DirectX, но вот пришлось столкнуться.

Спасибо.


 
Sapersky   (2005-10-19 19:10) [1]

В составе madCollection/madCodeHook ( http://www.madshi.net ) есть пример. Во всяком случае, получение IDirectDraw там есть. А поверхности - IDirectDraw.EnumSurfaces или перехватить IDirectDraw.CreateSurface.


 
Torvald   (2005-10-19 20:02) [2]


> Sapersky   (19.10.05 19:10) [1]

Спасибо огромное, гляну!


 
Torvald   (2005-10-19 22:44) [3]

Установил madCollection, вещь просто нет слов какая ) почему я раньше про неё не слышал !!!
Глянул пример внедрения/перехвата Direct3D. Всё очень понятно и главное работает.
НО программы для захвата изображения через оверлей, например HyperSnap-DX, работают по-другому.

Специфика madCodeHook в том, что он перехватывает API вызовы, т.е. чтобы получить интерфейс IDirectDraw, там перехватывается функция DirectDrawCreateEx, таким образом невозможно получить уже созданый интерфейс.

HyperSnap-DX работет по-другому, он как-то перехватывает уже загруженые интерфейсы. Как? С помощью дизасемблера/отладчика удалось выяснить, что создаётся глобальный хук (dxsnap.dll) на клавиатуру и в момент нажатия клавиши PrintScreen этот хук передаёт в основную программу "захваченую" картинку.

Вот несколько интересных ресурсов-строк из этой ДЛЛ

"  ... and it is VISIBLE, ddc.dwCaps "
"  alpha = 0x%X"
"  Got OVERLAY surface in EnuSurfCB() "
"  Got OVERLAY surface in EnuSurfCB2()"
"  Got OVERLAY surface in EnuSurfCB3()"
"  Got PRIMARY surface in EnuSurfCB() "
"  Got PRIMARY surface in EnuSurfCB2()"
"  green = 0x%X"
...
"Bits per pixel: %d"
"Capture from MyGetDeviceData()"
"Capture from MyGetDeviceState()"
"CardType: %d"
"CBTHookProc"
...
"ddraw.dll"
"dinput.dll"
"dinput8.dll"
"DirectDrawCreate"
"DirectDrawCreateEx"
"DirectInput8Create"
"DirectInputCreateEx"
"DirectX 3Dfx filter"
"Discard Very First Scroll Lock"
"dwBBitMask = %x"
"dwFourCC = %x, MAKEFOURCC(UYVY) "
"dwGBitMask = %x"
"dwProcId = %8X"
"dwRBitMask = %x"
"dwUBitMask = %X"
"dwVBitMask = %X"
..
"Got lpDDSurface in EnuSurfCB() "
"Got lpDDSurface in EnuSurfCB2() "
"Got lpDDSurface in EnuSurfCB3() "
..
"pDDCreate is NULL"
"pDDSMem after CreateSurface() "
"pDirectDraw = %x, pDirectDraw2 "
"pDirectDraw->GetDisplayMode() "
"pDirectDraw2->EnumSurfaces() for "
"pDirectDraw2->GetDisplayMode() "
"pDirectDraw4->EnumSurfaces() caused "
"pDirectDraw4->GetDisplayMode() "
"pDirectDraw7->EnumSurfaces() caused "
"pDirectDraw7->GetDisplayMode() "
"pDirectInput8Create is NULL"
...

За madCollection спасибо, такое пригодиться )

Может есть другое решение?



Страницы: 1 вся ветка

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

Наверх




Память: 0.46 MB
Время: 0.047 c
3-1138794616
Dimo-N
2006-02-01 14:50
2006.03.26
помогите разобраться с работой компонента JvDBTreeView


11-1122651754
rOOse
2005-07-29 19:42
2006.03.26
OnMouseDown


15-1141154534
Piter
2006-02-28 22:22
2006.03.26
Посоветуйте мобильный телефон для GPRS-интернет


15-1141040158
DesertAlex
2006-02-27 14:35
2006.03.26
Важно! Вопрос не по программированию. Delphi или VB?


2-1142109472
ctudent
2006-03-11 23:37
2006.03.26
Как выполнить скрипт?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский