我正在制作全屏DirectX游戏的截图应用程序。 但是有一个问题 - 对于每个版本的DirectX,都有自己的方式来制作屏幕截图(据我所知)。
所以问题是如何确定我从这个DLL注入我的DLL的应用程序的DirectX版本?
答案 0 :(得分:0)
在我的DirectX钩子中确定实际DirectX版本的一个简单技巧是为每个dx dll调用GetModuleHandle。例如:
HINSTANCE hD3D11 = GetModuleHandle(TEXT("D3D11.DLL"));
if (hD3D11)
{
// DirectX 11 dll is loaded, so we can hook D3D11CreateDeviceAndSwapChain and/or D3D11CreateDevice
}
与D3D10.dll和D3D9.dll相同或相似。我认为最好的方法是按以下顺序尝试GetModuleHandle:d3d11.dll,d3d10.dll和d3d9.dll。 这种方法适用于我创建的DX挂钩。我希望它也适合你,或者你必须根据你的目的进行调整。当然你应该首先注入上面的代码来检查DX版本,之后决定根据版本注入哪个DXhook dll。