Delphi代码在Windows 7中无法开启屏幕保护程序

3

我有一个 Delphi 应用程序,可以使用以下代码将计算机置于屏幕保护模式:

hWnd := GetDesktopWindow ;
SendMessage (hWnd, WM_SYSCOMMAND, SC_SCREENSAVE, 0) ;

这在XP下运行良好,但我发现它在(嵌入式)Windows 7下不起作用。

有什么想法吗?


1
啊哈。问题在于嵌入式设备上没有设置(Windows)屏幕保护程序。我被屏幕实际上在延迟后关闭的事实所欺骗,但这似乎是平板电脑的硬件行为。SendMessage (<桌面句柄>,WM_SYSCOMMAND,SC_SCREENSAVE,0) ;和SendMessage (<主窗口句柄>,WM_SYSCOMMAND,SC_SCREENSAVE,0) ;似乎都返回零值。 - rossmcm
2个回答

4

这对我来说可行(Windows 7 Home Premium,64位)。你尝试将消息发送到另一个窗口,例如Handle吗?(另外,您确定您已安装了屏幕保护程序吗?)


0

SC_SCREENSAVE消息告诉目标窗口执行System.ini文件中[boot]部分指定的屏幕保护程序。由于操作系统是嵌入式Windows,这是Windows的简化版本,很可能system.ini文件被配置为没有屏幕保护程序。请检查您的system.ini文件。


1
我不这么认为。system.ini只用作16位应用程序的兼容性遗物。在Windows中,system.ini已经有一段时间没有真正使用了。请参阅http://en.wikipedia.org/wiki/SYSTEM.INI。 - Andreas Rejbrand

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接