VC开启系统屏保不成功,win7系统下 1C

win7系统,右键桌面个性化,里面不开启屏幕保护程序。
代码里发送PostMessage(GetSafeHwnd(),WM_SYSCOMMAND,SC_SCREENSAVE,NULL)未能成功开启系统屏保。请问如何在桌面未开启屏保的情况下,在程序里启动并设置时间。

5个回答

看下是不是uac权限不足造成的。你可以shellexecute xxx.src 直接启动屏保程序看看

MRamos
MRamos 回复苏小喵: 尝试过了,不可用。而且好像ScreenSaveActive一直是1?
4 年多之前 回复
devmiao
见了你女王大人喵姐还不跪下 回复MRamos: 直接操作注册表
4 年多之前 回复
MRamos
MRamos 不是权限问题,直接启动SRC是可以的,但是我想在桌面关闭屏保的状态下,达到修改设置里屏保的目的,比如设置屏保时间,屏保类型等。
4 年多之前 回复

测试了一下,以下代码是好用的

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

 const int WM_SYSCOMMAND = 0x112;    //系统消息
            const int SC_SCREENSAVE = 0xf140;   // 启动屏幕保护消息
            const int SC_MONITORPOWER = 0xF170; //关闭显示器的系统命令
            const int POWER_OFF = 2;            //2 为关闭, 1为省电状态,-1为开机
            IntPtr HWND_BROADCAST = new IntPtr(0xffff); //广播消息,所有顶级窗体都会接收
            //SendMessage(HWND_BROADCAST, WM_SYSCOMMAND, SC_MONITORPOWER, POWER_OFF); // 关闭显示器
            SendMessage(HWND_BROADCAST, WM_SYSCOMMAND, SC_SCREENSAVE, 0);           // 启动屏保
lzp_lrp
WorldMobile 回复MRamos: 是的,这段代码需要先设置好屏保,这个是直接打开屏保的,测试过,没有问题
4 年多之前 回复
MRamos
MRamos 我在MFC下,PostMessage(GetSafeHwnd(),WM_SYSCOMMAND,SC_SCREENSAVE,NULL); 这个应该是和C#一样的功能,个性化里面没开启屏保的话,他不起作用。
4 年多之前 回复

这段代码的前提是设置好屏保程序,这是开户屏保的代码

MRamos
MRamos 是的,前提设置好屏保,我的代码是能实现的,我不知道如何在未设置的前提下开启系统屏保
4 年多之前 回复

如果在桌面上开启屏保功能,执行上面的代码是可以立刻屏保的。

应该有同仁会遇到相同的问题吧,能否指点一二呢?

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问