2017-06-04 50 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所有的显示器将被关闭。我看不到分开打开显示器的选项。 –