以编程方式在C#中输入Connected Standby

时间:2016-05-11 07:09:01

标签: c# windows

因此,当系统进入Connected Standby时,似乎有许多问题要求检测,但我希望实际使其发生。< / p>

原因是,如果启用了Connected Standby,那么简单地调用C#中的SetPowerState(Sleep)方法就不会起作用了(不做任何事情),而我的应用程序因此不再使系统进入休眠状态的工作原理。

注意:我不想唤醒系统,我想做的相当于点击开始 - &gt;电源 - &gt;睡眠。

2 个答案:

答案 0 :(得分:1)

所以...显然,因为当S0低功耗空闲可用时没有“睡眠”,这就是使计算机进入睡眠的传统方法不起作用的原因:该选项不可用。

基本上,电源菜单中的睡眠命令只是关闭显示屏,触发其余的连接待机。

因此,告诉Display关闭的现有代码将实现相同的效果,如下所示:

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

void doStandby()
{
    //Turn off the monitor
    SendMessage(0xFFFF,0x112,0xF170,2);
} 

当然,需要一些代码来确定哪种睡眠方法适合您的设备,但这在其他地方也有讨论。

答案 1 :(得分:0)

此问题已在此处得到解答: https://stackoverflow.com/a/37032188/2277323

不要这样做:

Process.Start("rundll32.exe", "powrprof.dll,SetSuspendState 0,1,0");

因为它将调用未定义的行为并可能将计算机置于休眠状态。 (谢谢CherryDT)。