c++ - 弯路捕捉质感

标签 c++ hook direct3d detours apimonitor

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

我编了弯路。并且可以使 Hook 更改应用程序窗口的名称。喜欢:

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 的东西

最佳答案

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

关于c++ - 弯路捕捉质感,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10431863/

相关文章:

c++ - 将 initializer_list 插入 vector<string> 时 VS2013 SP5 崩溃

c# - 管理内存

c++ - Direct2D 和 Direct3D 互操作性的方法

shader - SetInputLayout、VertexShader 和 PixelShader 之间不匹配

c++ - 如何用计算机代码检查无限集是否在加法下是封闭的?

c++ - 如何为可为char或string的模板类实现方法?

c++ - OgreSdk 1.9.1 - 断言失败

delphi - Csrss中Hook进程创建

表示 TFS 服务 Hook 事件的 C# 对象

winapi - 您可以将一个进程的 Direct3D 窗口渲染到另一个进程的 HWND 中吗?