2017-06-04 120 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

使用ctypes你可以訪問你所提到的WINAPI功能:

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所有的顯示器將被關閉。我看不到分開打開顯示器的選項。 –