2016-05-11 2 views
0

は、だから、システムがスタンバイ接続入るときを検出する方法を求めて多くの質問があるようだが、それはを発生する原因私はに実際にを探していますC#でスタンバイを接続し入力します。はプログラム

なぜなら、Connected Standbyが有効になっていれば、C#のSetPowerState(Sleep)メソッドが呼び出されないため、システムがスリープ状態になるという私のアプリは動作しなくなりました。

注:私は起床したくないシステムでは、スタート - >電源 - >スリープをクリックするのと同じことをやりたいのですが。

答えて

0

この質問はすでにここに回答されています https://stackoverflow.com/a/37032188/2277323

はしないでください。

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

を、それは未定義の動作を起動すると、代わりに休止状態にコンピュータを置くかもしれないと。 (ありがとうCherryDT)。

+0

私はこれを確認しますが、私の思い出しから、この正確なことは私がS0をサポートしているシステムでは動作しないと言っています。 – Tsaukpaetra

0

So ... S0 Low Power Idleが利用可能なときに「スリープ」がないため、コンピュータをスリープ状態にする伝統的な方法が機能しない理由があります。このオプションは利用できません。

本質的に、電源メニューのスリープコマンドはディスプレイを単にオフにし、残りの接続スタンバイをトリガします。

ので、既存のコードが何かそうのように、同じことが影響し達成する表示をオフに伝えるために:もちろん

[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); 
} 

は、お使いのデバイスに適切である睡眠方法を決定するためにいくつかのコードが必要です、それは他の場所で議論されています。