有没有方法可以检测 Windows 游戏模式当前是否处于活动状态(即用户正在玩游戏 - 而不是游戏模式是否启用)?
我在网上搜索了相当多的内容,但只找到了一些对开发 C++ 应用程序有用的信息。
理想情况下,我可以使用 PowerShell、命令提示符、WSL 或大多数 PC 上预装的任何程序进行检查。
答案1
可以通过注册表检测正在运行的 Steam 游戏。在注册表项中HKEY_CURRENT_USER\Software\Valve\Steam
检查项目RunningAppID
。如果该项目存在且其值不为零,则表示 Steam 游戏当前正在运行。
存在其他更适合 Stack Overflow 站点的检查:
- 使用 ifIDirect3DDevice9::TestCooperativeLevel
返回
DDERR_EXCLUSIVEMODEALREADYSET
。参见 邮政。 - 使用该
SHQueryUserNotificationState
函数判断用户是否正在玩全屏D3D游戏,会报告QUNS_RUNNING_D3D_FULL_SCREEN。关联)
答案2
您的主要问题是什么(请将您的帖子缩减为一个问题)?!
根据您的规范:
(即用户正在玩游戏 — 游戏模式未启用)
我认为主要是"is the user is playing a game?"
- 尽管需要规格(参见我的评论) - 我建议根据您的规格设置一台电脑(不带游戏)并删除安装或执行任何新软件的权利。
您还需要限制网站访问,例如仅允许某些网站(很容易但这可能不符合您的要求)或禁止游戏网站(管理起来更繁琐,您可能想为此目的使用商业防火墙/网络拦截器列表)。
这将解决两个最明显的游戏资源。但是,请记住,几乎任何东西都可以用来玩游戏。根据您的目标群体,更好的解决方案可能是教育您的用户为什么他们不应该玩游戏。