从C# Windows表单启动系统屏幕保护程序

8

希望这是一个简单的问题,但是否有人能够提供一些简单的C#代码来启动当前配置的屏幕保护程序?

1个回答

9

这是一个很好的网站,展示了如何处理屏幕保护程序的各个方面。请查看结尾处的评论以获取启动屏幕保护程序的代码。

http://www.codeproject.com/KB/cs/ScreenSaverControl.aspx

    [DllImport("user32.dll", EntryPoint = "GetDesktopWindow")]
    private static extern IntPtr GetDesktopWindow();

    [DllImport("user32.dll")]
    private static extern IntPtr SendMessage(IntPtr hWnd, uint Msg, int wParam, int lParam);

    //...

    private const int SC_SCREENSAVE = 0xF140;
    private const int WM_SYSCOMMAND = 0x0112;

    //...

    public static void SetScreenSaverRunning()
    {
    SendMessage

(GetDesktopWindow(), WM_SYSCOMMAND, SC_SCREENSAVE, 0);
}

PInvoke签名不正确。wParam和lParam都应该被类型化为IntPtr。 - JaredPar
代码在SendMessage的w和l参数中使用了int,但是由于它的写法,const int将无法与IntPtr一起使用。 - cfeduke
感谢您的更改。这台电脑上没有集成开发环境来测试。我对社区和在线内容抱有信心。再次感谢 :-) - Inisheer
1
它在32位机器上可以正常运行,但在64位机器上会彻底失败。 - JaredPar
只是为了谨慎起见,请不要忘记检查控制面板上是否有任何屏幕保护程序被激活。我在设置中设置了“无”,但花了我10分钟才发现为什么该功能无法正常工作。 - ozanmuyes
显示剩余2条评论

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