Windows 7,8和10应该附带一个小程序,可以做到这一点:displayswitch.exe. This page列出以下参数:
displayswitch.exe /internal Disconnect projector (same as "Show only on 1" from the Display Properties dialog)
displayswitch.exe /clone Duplicate screen
displayswitch.exe /extend Extend screen
displayswitch.exe /external Projector only (disconnect local) (same as "Show only on 2" from the Display Properties dialog)
Option Explicit
Dim WshShell, Dummy, Splash
On Error Resume Next
Set WshShell = WScript.CreateObject("WScript.Shell")
'Main
Call DoIt
WScript.Quit
Sub DoIt
wshshell.Run("%systemroot%\system32\control.exe desk.cpl,@0,3")
' Give Display Properties time to load
WScript.Sleep 1000
WshShell.SendKeys "2"
WScript.Sleep 10
WshShell.SendKeys "%E"
WScript.Sleep 500
WshShell.SendKeys "%A"
WshShell.SendKeys "{TAB}"
WshShell.SendKeys "{TAB}"
WshShell.SendKeys "{TAB}"
WshShell.SendKeys "{TAB}"
WshShell.SendKeys "{TAB}"
WshShell.SendKeys "{TAB}"
WshShell.SendKeys "{TAB}"
WshShell.SendKeys "{TAB}"
WshShell.SendKeys "{TAB}"
WshShell.SendKeys "{TAB}"
WshShell.SendKeys "{ENTER}"
End Sub 'DoIt
在Autoit中,这将是:
;
; — toggle-screen.au3
;
; exec cpanel app `display settings`
Run(”C:\WINDOWS\system32\control.exe desk.cpl,@0,3?”)
; wait for window to be active
WinWaitActive(”Display Settings”)
; select 2nd display
Send(”{TAB}”)
Send(”{DOWN}”)
; work back to the ‘extend desktop’ control
Send(”+{TAB}”)
Send(”+{TAB}”)
Send(”+{TAB}”)
Send(”+{TAB}”)
Send(”+{TAB}”)
Send(”+{TAB}”)
Send(”+{TAB}”)
Send(”+{TAB}”)
Send(”+{TAB}”)
; toggle ‘extend desktop’ control and apply
Send(”{SPACE}”)
Send(”{ENTER}”)
; wait for window to be active
WinWaitActive(”Display Settings”)
; accept
Send(”{TAB}”)
Send(”{ENTER}”)
;
; — E.O.F.
;
#NoEnv ; Recommended for performance and compatibility with future AutoHotkey releases.
; #Warn ; Enable warnings to assist with detecting common errors.
SendMode Input ; Recommended for new scripts due to its superior speed and reliability.
#Persistent
Any1stKeyUWantToTurnOn::RunWait C:\Windows\System32\DisplaySwitch.exe /extend
Any2stKeyUWantToTurnOff::RunWait C:\Windows\System32\DisplaySwitch.exe /internal
9条答案
按热度按时间i7uq4tfw1#
Windows 7,8和10应该附带一个小程序,可以做到这一点:displayswitch.exe. This page列出以下参数:
对于所提出的问题的一键式解决方案,只需创建一个包含单行的 *. bat文件
并将其保存到桌面。
在Windows 11 22 H2中,displayswitch.exe似乎不带参数,请参考this链接,建议使用Windows-10版本的displayswitch.exe副本,而不是内置版本。
vcudknz32#
我做了一个更干净的版本,不使用sendkeys。
我只在一台新安装的计算机上测试过这个。
yrdbyhpb3#
这种操作不能直接从PowerShell访问,因为没有.NET接口到这些设置。许多核心操作系统的东西是非托管代码,只能通过win32 API调用进行操作。虽然您可能会使用WMI,但我搜索了一段时间,无法找到能够操作此设置的令人满意的WMI类。
下一步将是直接修改注册表。它看起来像设置位于HKLM:\system\CurrentControlSet\control\video-某处。我相信它是一个名为“Attach.ToDesktop”。
这是一个部分解决方案,所以我标记为社区维基答案。
我不确定这是正确的注册表项,我没有一个系统上,我可以测试多显示器的时刻.这是为了确定哪个是主控制器,然后它输出Attach.ToDesktop键的值.
u4vypkhs4#
第一个可能的解决方案是…通过GUI(但没有用户交互)
VB script(也是described here,但使用Autoit):
在Autoit中,这将是:
kzmpq1sx5#
自动热键中的2行
第二个显示器打开:
第二个显示关闭:
或
你可以在github / BNK3R-Boy / DisplaySwitch上查看并试用我的工具。我现在就发布了它。
2nbm6dog6#
下面是另一个C#解决方案(通过how to set primary monitor for Windows-7, in C#):
yzckvree7#
这里是我的AutoIt脚本切换显示器,因为我的ATI显卡不允许我有3个显示器在同一时间活动。我有2个显示器连接和电视。这个脚本是做什么VonC的脚本,但在一个更有效和更快的方式。
只需将“SAMSUNG”替换为您的第三台显示器/电视的名称,您就可以设置好了!您肯定知道,您可以将其转换为可执行文件,即使没有安装AutoIt,也可以在任何机器上运行。
0yg35tkg8#
为了让VonC的脚本在我的机器上工作,我不得不做了一些小的修改,现在它更通用了。
1tu0hz3e9#
Windows键+ P按钮将做同样的事情