2012-05-03 63 views
1

有一個賽車遊戲,我需要收集遙測和統計。並添加額外的HUDDetours捕捉紋理

我編譯了Detours。並且可以使鉤子更改應用程序窗口的名稱。Like:

LRESULT (WINAPI * TrueSendMessageW)(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam) = SendMessageW; 
__declspec(dllexport) LRESULT WINAPI MySendMessageW(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam) 
{ 
    if (Msg == WM_SETTEXT) 
     return TrueSendMessageW(hWnd, Msg, wParam, (LPARAM)L"new name window"); 
    return TrueSendMessageW(hWnd, Msg, wParam, lParam); 
} 
... 

然後用withdll.exe運行它。一切都好。

但我不知道如何截取direct3d。在API監視器的幫助下,我發現該程序使用Microsoft.Xna.Framework.Graphics.dll IDirect3DDevice9 :: SetTexture

有人可以告訴如何獲得此紋理?一般來說,我想得到類似link

+0

所以你有一個SendMessage的繞道,但你真正需要的是繞行Direct3D API流。有趣的是,你提出了Matthew Fischer的鏈接,因爲我實際上是試圖在託管的C#中重新創建該項目。我無法幫助您使用C++,但絕對可以下載Fischer的源代碼。你會注意到他沒有使用Detours來攔截Diret3D。他只是把他自己的* d3d9.dll(閱讀爲什麼這個作品)。他必須重新創建他的包裝的大部分界面,但它的工作原理。 – Jason

回答

0

Detour攔截OS API調用,Direct3D通過COM對象概念實現。您可能會截獲D3D設備對象創建的第一步,但在此之後,您將不得不處理COM對象接口,而Detour不會幫助您。