gpt4 book ai didi

c# - OpenGL/DirectX Hook - 类似于 FRAPS

转载 作者:IT老高 更新时间:2023-10-28 23:16:40 30 4
gpt4 key购买 nike

是否可以像 FRAPS 一样检测哪些应用程序正在使用 OpenGL 或 DirectX? (可能使用某种形式的钩子(Hook))?我可能不需要实际绘制到窗口,我只需要知道哪些进程正在执行某种形式的 3D 渲染。

(编辑:)如果您不熟悉它,FRAPS 是一个可用于在 3D 应用程序上绘制“每秒帧数”计数器的程序。 FRAPS 会自行查找所有正在运行的 3D 应用程序,而无需您指定进程名称。

外部游戏绘制的“每秒帧数”计数器示例: enter image description here

最佳答案

可能最简单的方法是检查是否存在 OpenGL 和 DirectX 核心库,也可以将驱动程序 OGL dll 添加到其中(例如 nvogl),这可以通过 EnumProcesses 完成。 & EnumProcessModulesEx ,使用 p/invoke,这至少会为您提供一组可能使用 OGL 或 DX 的起始进程。

当然,有些应用程序会同时加载两个 API 并仅使用一个,或者仅有条件地使用GFX API 之一(尽管后者仅使用专用工具等发生),为此,IMO,最好的检查方法是执行某种形式的注入(inject)或像调试器一样附加到进程,然后 Hook Present 用于 DX 或 wglSwapBuffers 用于 OGL。

您可能会通过枚举 GDI 句柄并查找 DXGI 或 OGL 渲染上下文来摆脱不使用钩子(Hook)的情况,我不知道这有多可行。

关于c# - OpenGL/DirectX Hook - 类似于 FRAPS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11810854/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com