检查前窗是否是使用DirectX的Game \

时间:2018-01-11 23:00:26

标签: python python-2.7 directx

我正在开发一个应用程序作为控制器,通过套接字连接到您的PC,并允许用户使用该应用程序玩PC游戏。如果前面运行的应用程序是游戏,我需要检查服务器端。如果是,则应用程序将像普通的XBOX \ PS遥控器一样工作,否则,遥控器将无法执行任何操作。

如何检查PC的前窗是否已安装游戏以及此游戏是否使用DirectX?基本上该应用程序只适用于DirectX游戏,因为我正在“伪造按键”。我知道它不会与其他游戏兼容,但很好。

2 个答案:

答案 0 :(得分:1)

您可以使用答案here来获取“有效”窗口,例如。接收输入的那个。然后,您可以使用GetWindowThreadProcessId从该窗口获取进程ID。最后,使用this回答列出进程已加载的DLL,并从DirectX DLL中搜索(可能是d3d11.dll或d3d12.dll是您要搜索的 - 但它依赖于游戏)。

请注意,仅仅因为应用程序加载了D3D,并不一定意味着它是游戏。但是,这并不意味着您的应用程序不会对它有用。

答案 1 :(得分:0)

所以,感谢MuertoExcobito我成功完成了检查,我想补充一下他的答案,如果你想得到任务管理器中写的正确的PID。 这会工作:

hwnd = ctypes.windll.user32.GetForegroundWindow()
lpdw_process_id = ctypes.c_ulong()
result = ctypes.windll.user32.GetWindowThreadProcessId(hwnd, ctypes.byref(lpdw_process_id))
process_id = lpdw_process_id.value
print process_id