【发布时间】:2014-10-07 17:15:38
【问题描述】:
我很快就开始学习 python。对于我的第一个项目,我想创建一个工具,在检查第三个程序是否全屏时,开始运行一些功能。 基本上,假设我们运行一个游戏,它进入全屏,然后我的程序应该检测到它。我如何让它做到这一点? (我在 Windows 平台上) 我已经看到一些关于使用 Windows api 或使用 .NET 框架安装扩展的提示,但我太缺乏经验,不知道如何继续。
【问题讨论】:
标签: python
我很快就开始学习 python。对于我的第一个项目,我想创建一个工具,在检查第三个程序是否全屏时,开始运行一些功能。 基本上,假设我们运行一个游戏,它进入全屏,然后我的程序应该检测到它。我如何让它做到这一点? (我在 Windows 平台上) 我已经看到一些关于使用 Windows api 或使用 .NET 框架安装扩展的提示,但我太缺乏经验,不知道如何继续。
【问题讨论】:
标签: python
感谢@ivan_pozdeev 的提示,这就是我解决问题的方法。
它检查主屏幕的屏幕分辨率并将其与前景窗口的窗口大小进行比较。
对于多显示器设置,存在以下问题:
from ctypes import windll
import win32gui
user32 = windll.user32
user32.SetProcessDPIAware() # optional, makes functions return real pixel numbers instead of scaled values
full_screen_rect = (0, 0, user32.GetSystemMetrics(0), user32.GetSystemMetrics(1))
def is_full_screen():
try:
hWnd = user32.GetForegroundWindow()
rect = win32gui.GetWindowRect(hWnd)
return rect == full_screen_rect
except:
return False
【讨论】:
这与 Python 无关,它是纯 WinAPI。有关算法,请参阅How to check if an other program is running in fullscreen mode, eg. a media player。然后查看 pywin32 和可能的 ctypes 以获取适当的包装器。
【讨论】: