我希望我的程序能够启动任何Windows游戏,当用户正在玩它时,在游戏窗口的某个部分间歇地显示一些文本或图片。游戏可能是在窗口或全屏模式。根据我从在线资源中得到的结果,这可以使用支持覆盖的图形库和使用Windows来跟踪目标应用程序的窗口来完成。在这方面,我有一些问题。
发布于 2010-07-16 07:56:46
框架是第三方应用程序对全屏DirectX应用程序执行此类操作的典型示例。它通过连接一些系统调用并插入应用程序和DirectX之间的调用链来工作。虽然有一些性能上的问题,但通常情况下它是最小的。
此页似乎有一些关于如何用这种方式连接应用程序的细节和示例代码。
如果我没记错,从其他论坛讨论(目前找不到链接)。搜索诸如“框架是如何工作的”之类的东西,这是一个很流行的问题),fraps用一些东西来强迫应用程序加载其DLL,然后钩子出现()调用并执行设备->Clear()调用,然后调用真正的Present(),并将小矩形的列表设置为不同的颜色,这可以拼出它所显示的FPS号。这具有最小的性能影响,并广泛兼容任何渲染应用程序正在做的事情。叠加位图要复杂得多,因为在目前情况下,这样做并不容易。也许,如果您可以挂起EndScene,那么您可以做更多的事情,但是您必须小心不要更改设备状态。
PIX拥有对DirectX驱动程序的特权访问权限,所以我不希望能够使用它作为模型进行仿真。
如果目标应用程序在窗口模式下运行,那么挂钩DirectX仍然有效,但是您也可以使用GDI。
编辑:,我认为这是我最初想要的链接。
https://stackoverflow.com/questions/3266346
复制