在Vista中自动执行双显示器设置

时间:2009-02-27 19:12:38

标签: powershell automation accessibility

我使用笔记本电脑作为我的主工作站。有时我独自工作,但很大一部分时间,我在办公桌,我连接外部显示器,以增加我的工作空间。

每次执行此操作时,我都会在Windows Vista中单击相同的对话框来设置双屏并定位窗口。这似乎是一个可重复的任务,我可以自动化。

我希望能够插入我的显示器电缆,双击程序并让它自动配置显示器。

什么类型的程序可以做到这一点?我没有发现很多相关的在线。我正在考虑使用PowerShell尝试autohotkey脚本或Windows Accessibility API。这个问题已经解决了吗?

澄清:我特别希望自动化我使用鼠标调用Windows Vista中基本功能的步骤。

  1. 右键单击桌面
  2. 在上下文菜单中选择个性化
  3. 点击显示设置
  4. 单击监视器#2,然后单击复选框以“将桌面扩展到此监视器”
  5. 单击并拖动监视器#1
  6. 左侧的监视器#2
  7. 单击“确定”关闭对话框
  8. 在随后的弹出窗口中单击是以接受这些监视器设置
  9. 更新:Windows 7会自动执行此操作

    我刚升级到Windows 7,它记得我的双显示器设置。我将它们设置为上面列出的工作一次,然后拔掉插头并在周末在家工作。星期一早上我进来了,启动了,插上电源,然后哇哇!它刚刚起作用。谢谢Windows 7!

6 个答案:

答案 0 :(得分:1)

我没有看到现有的实用程序执行此操作,但使用Win32 API编写一个很容易。通过this pageEnumDisplayDevices获取显示设备列表,EnumDisplaySettingsEx获取当前设置,ChangeDisplaySettingsEx将进行更改。

DEVMODE.dmPosition字段应包含显示屏左上角的虚拟坐标,主监视器始终为(0,0),其他相对于此。

该工具需要两种模式,第一种将当前设置保存到配置文件,第二种模式应用配置中的设置。我只存储/检索显示设备索引,名称以及ChangeDisplaySettingsEx文档中提到的每个DEVMODE.dm *字段。基于文本的配置允许手动编辑。

答案 1 :(得分:0)

尝试UltraMon以获得出色的双显示器支持。我已经在很多不同的笔记本电脑和台式机上使用它多年了,效果很好。我只使用过XP,所以我不确定Vista是如何工作的。

答案 2 :(得分:0)

我的Lenovo T60p无需任何特殊步骤即可自动完成此操作。尝试升级您的视频驱动程序,并检查制造商的网站是否有任何可以执行此操作的实用程序。

答案 3 :(得分:0)

如果你有windows vista或7,你可以点击windows_key + P.你有很多选项可供选择,包括扩展

答案 4 :(得分:0)

我相信Ultramon实际上会工作。在系统托盘中Ultramon图标的右键菜单中,有一个“禁用/启用辅助”命令。

我想你可以简单地说:

  1. 插入第二台显示器
  2. 选择“启用辅助”

答案 5 :(得分:0)

三年后,我回答了自己的问题!耶!!!

可以使用http://www.autohotkey.com

轻松编写脚本

以下是使用Windows + 1和Windows + 2在一台显示器和两台显示器之间进行交换的示例脚本。 AutoHotKey还允许交换第二个监视器位置所需的单击和拖动行为。

#NoEnv  ; Recommended for performance and compatibility with future AutoHotkey releases.
#Warn  ; Recommended for catching common errors.
SendMode Input  ; Recommended for new scripts due to its superior speed and reliability.
SetWorkingDir %A_ScriptDir%  ; Ensures a consistent starting directory.
#1::
Send {LWin}
WinWaitActive Start menu
Send Adjust Screen Resolution
Send {enter}
WinWaitActive Screen Resolution
ControlClick ComboBox3
Send {PgDn}
Send {Up} ; Select "Show desktop only on 1"
Send {enter}
Sleep 3000 ; workaround - cannot select accept/revert window?
Send {left}
Send {enter} ; accept changes
Return
#2::
Send {LWin}
WinWaitActive Start menu
Send Adjust Screen Resolution
Send {enter}
WinWaitActive Screen Resolution
ControlClick ComboBox3
Send {PgDn}
Send {Up}
Send {Up} ; Select "Extend these displays"
Send {enter}
Sleep 3000 ; workaround - cannot select accept/revert window?
Send {left}
Send {enter} ; accept changes
Return