1

有一个赛车游戏,我需要收集遥测和统计数据。并添加一个额外的 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 Monitor 的帮助下,我发现程序使用Microsoft.Xna.Framework.Graphics.dll IDirect3DDevice9::SetTexture

有人能告诉我如何获得这种纹理吗?一般来说,我想得到类似链接的东西

4

1 回答 1

0

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

于 2012-05-04T18:39:34.403 回答