4

可以建议的一种解决方案是定期查找特殊的“屏幕保护程序”桌面,如果存在,则将其视为正在运行的屏幕保护程序。

但显然,并非所有屏幕保护程序都是如此,因为某些提到的桌面始终存在。

有没有更可靠的解决方案?

4

5 回答 5

10

请参阅带有 SPI_GETSCREENSAVERRUNNING 参数的 WINAPI 函数 SystemParametersInfo()。这是检测屏幕保护程序当前是否正在运行的唯一记录方法。(您也可以查看是否启用了屏幕保护,获取并设置超时值,并使用此功能启动屏幕保护。)

于 2009-02-06T20:16:59.463 回答
2

我认为关键是通过其窗口类(“WindowsScreenSaverClass”)来识别屏幕保护程序。我找到了这个页面 如何启动、检测和停止屏幕保护程序?有一些代码示例和解释。

于 2009-02-04T10:09:21.113 回答
1

如何:使用 Visual Basic 6.0 确定屏幕保护程序是否正在运行

我知道这是针对 VB6 的,但它肯定是一个很好的起点。

于 2009-02-04T10:01:23.720 回答
-1

是我对屏幕保护程序事件检测的实现。

笔记:

  • SPI_GETSCREENSAVERRUNNING检测到在我的情况下不准确的 Windows 事件 id 4802 和 4803,请查看我的问题,因此添加了用户空闲时间计算
  • GetLastInputInfo如果进程是服务,显然不起作用。
于 2016-04-29T19:35:12.830 回答
-2

在 .MainModule.FileName 中搜索带有 .scr 的进程的进程

于 2009-02-04T10:18:32.750 回答