C#モニタを閉じる
3814 ワード
Windowsは私たちにAPIを提供してくれました.モニタを瞬時に閉じることができます.
このAPIは、プラットフォーム呼び出しで次のように署名されます.
このメソッドの各パラメータタイプにはいくつかのリロードがありますが、一般的にはIntPtrを推奨します.そうしないと、64ビットプラットフォームORの他の場合にクラッシュする可能性があります.
Msgにシステムメッセージを伝える必要があります.すなわち、WM_SYSCOMMAND
次に、スクリーンセーバーなどの追加情報:SC_SCREENSAVE、モニタ電源:SC_MONITORPOWER
WM_SYSCOMMANDパラメータ:http://msdn.microsoft.com/en-us/library/ms646360(VS.85).aspx
SC_MONITORPOWERパラメータ:http://www.pinvoke.net/default.aspx/Enums/WindowsMessages.html
SendMessage : http://www.pinvoke.net/default.aspx/user32/SendMessage.html
Console Applicationが実行されると、そのへへへのフォームは嫌で、属性の中でWindowsアプリケーションに変更するだけでフォームが現れません.
このAPIは、プラットフォーム呼び出しで次のように署名されます.
[System.Runtime.InteropServices.DllImport("user32.dll")]
public static extern IntPtr SendMessage(IntPtr hWnd, uint msg, uint wParam, int IParam);
このメソッドの各パラメータタイプにはいくつかのリロードがありますが、一般的にはIntPtrを推奨します.そうしないと、64ビットプラットフォームORの他の場合にクラッシュする可能性があります.
Msgにシステムメッセージを伝える必要があります.すなわち、WM_SYSCOMMAND
次に、スクリーンセーバーなどの追加情報:SC_SCREENSAVE、モニタ電源:SC_MONITORPOWER
WM_SYSCOMMANDパラメータ:http://msdn.microsoft.com/en-us/library/ms646360(VS.85).aspx
SC_MONITORPOWERパラメータ:http://www.pinvoke.net/default.aspx/Enums/WindowsMessages.html
SendMessage : http://www.pinvoke.net/default.aspx/user32/SendMessage.html
Console Applicationが実行されると、そのへへへのフォームは嫌で、属性の中でWindowsアプリケーションに変更するだけでフォームが現れません.
class Program
{
private const uint WM_SYSCOMMAND = 0x112; //
private const int SC_MONITORPOWER = 0xF170; //
private const int MonitorPowerOff = 2; //2 PowerOff, 1 ,-1
private static readonly IntPtr HWND_BROADCAST = new IntPtr(0xffff);// ,
[System.Runtime.InteropServices.DllImport("user32.dll")]
private static extern IntPtr SendMessage(IntPtr hWnd, uint Msg, int wParam, int lParam);
static void Main(string[] args)
{
SendMessage(HWND_BROADCAST, WM_SYSCOMMAND, SC_MONITORPOWER, MonitorPowerOff);
}
}