2017-06-04 17 views
0

私は、複数のモニターをプログラム的にパワーオフする方法を探しています。プログラムで複数のモニターの電源をオフにする

注:これは、すべてのモニターの電源を切ることを意味するものではありません。

私の現在の環境で現在コンパイルできる言語は、python/C/C++です。私は簡単なC++の方法を知っています。

SendMessage(GetConsoleWindow(), WM_SYSCOMMAND, SC_MONITORPOWER, 2); 

しかし、これはシステムのすべてのモニターの電源をオフにしますが、これは後の結果ではありません。

「アプリケーションウィンドウ」という名前のウィンドウがあるとしましょう。このアプリケーションウィンドウが開いていないすべてのモニタの電源を切るとします。

注:理想的には、Pythonで実装されますが、必要はありません。

編集: これを発見しましたが、私はそれを再現することができず、望ましい機能を持っています。

Cpp how to turn off specific monitor?

+0

モニターを無効にすることによって除き、個々のモニタの電源を切ることができないならそれは私は驚かないだろう。 Windowsの電源管理ソフトウェアは、それを行う必要はありません。すべてのモニターが省電力モード(オフ)になっているか、またはすべてがオフになっています。 –

+0

@RossRidgeもし私がモニタを無効にするならば、そのモニタ上で開いたアプリケーションを別のモニタに移動するか、そのモニタ/ピクセル位置に持続させるでしょうか? – 3rdaccountQQ

+0

モニタを無効にすると、Windowsはそのモニタ上のウィンドウを別の有効なモニタに移動します。 –

答えて

-2

あなたが言及したWINAPI機能にアクセスすることができctypesを使用する:

import ctypes 

WM_SYSCOMMAND = 0x0112 
SC_MONITORPOWER = 0xF170 

window = ctypes.windll.kernel32.GetConsoleWindow() 

ctypes.windll.user32.SendMessageA(window, WM_SYSCOMMAND, SC_MONITORPOWER, 2); 

MSDNドキュメント:

あなたはGetDesktopWindowを使用する必要があります。

window = ctypes.windll.kernel32.GetDesktopWindow() 
+1

さて、特定の*モニターをどのようにオフにしますか? – user2357112

+0

彼はそれが簡単だと言った...私はPythonでそれを複製しました –

+0

とにかく、すべてのモニターをwinapiを使用してオフになります。モニターを別々にオンにするオプションはありません。 –

関連する問題