win7系统,右键桌面个性化,里面不开启屏幕保护程序。
代码里发送PostMessage(GetSafeHwnd(),WM_SYSCOMMAND,SC_SCREENSAVE,NULL)未能成功开启系统屏保。请问如何在桌面未开启屏保的情况下,在程序里启动并设置时间。
如果在桌面上开启屏保功能,执行上面的代码是可以立刻屏保的。
看下是不是uac权限不足造成的。你可以shellexecute xxx.src 直接启动屏保程序看看
测试了一下,以下代码是好用的
[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); // 启动屏保
这段代码的前提是设置好屏保程序,这是开户屏保的代码
应该有同仁会遇到相同的问题吧,能否指点一二呢?