Главная страница
    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.04 c
1-1140463549
Grol
2006-02-20 22:25
2006.03.26
Потоки созданные ExcelApplication


6-1134400711
ZeFiR
2005-12-12 18:18
2006.03.26
Как вывести в заголовок окна название страницы, загруженной в TWe


2-1141820098
Fenix
2006-03-08 15:14
2006.03.26
Форма и ДЛЛ


15-1141390901
keal
2006-03-03 16:01
2006.03.26
8 марта


15-1141120583
AlexeyT
2006-02-28 12:56
2006.03.26
Статья "Написание оптимального кода под Delphi"





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