Detours捕捉纹理

时间:2012-05-03 12:57:04

标签: c++ hook direct3d detours

有一个赛车游戏,我需要收集遥测和统计数据。并添加额外的HUD

我编译了Detours。并且可以使钩子改变应用程序窗口的名称。就像:

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

的内容

1 个答案:

答案 0 :(得分:0)

Detour拦截OS API调用,Direct3D通过COM对象概念实现。您可能可以拦截D3D设备对象创建的第一步,但在此之后您将不得不处理COM对象接口,而Detour将无法帮助您。