我想编写一个脚本来组织我当前在屏幕上打开的窗口。
例如:将所有浏览器移动到监视器 1,将其他所有浏览器移动到监视器 2 例如:使监视器 1 上的 4 个最大化窗口分别在屏幕上占据相同大小的象限等。
我认为 VBScript 会对此有好处吗?在 Win7 环境中我会为此使用什么对象?
我想编写一个脚本来组织我当前在屏幕上打开的窗口。
例如:将所有浏览器移动到监视器 1,将其他所有浏览器移动到监视器 2 例如:使监视器 1 上的 4 个最大化窗口分别在屏幕上占据相同大小的象限等。
我认为 VBScript 会对此有好处吗?在 Win7 环境中我会为此使用什么对象?
这在开箱即用的 VBScript 中是不可能的,因为它不提供对用于窗口管理的 Windows API 的访问。
AutoIt似乎是一个更好的工具。查看以下函数和宏:
WinMove
- 移动窗口_WinAPI_GetSystemMetrics
(80)
- 获取显示器数量@DesktopWidth
和@DesktopHeight
- 主监视器像素大小_WinAPI_GetSystemMetrics(78)
和_WinAPI_GetSystemMetrics(79)
- 完整的桌面宽度和高度如果监视器尺寸不同,您可以使用 WMI 类Win32_DesktopMonitor
及其ScreenWidth
和ScreenHeigth
属性来获取单独的监视器尺寸。
我不确定我是否会说 VBS 对此有好处,我认为我更喜欢 C++,因为它会涉及我认为在 C++ 中更容易的 Windows API 调用,但这取决于你的技能和 VBS可能没问题。
我要查看的 API 调用将是EnumWindows或FindWindow来查找要移动的窗口,然后是SetWindowPos来移动它们。
我认为,如果您想将它们移动到辅助监视器,您应该能够通过将其移动到主监视器之外的位置来做到这一点(例如,如果辅助监视器在左侧扩展,则可能是负位置)。为此,您需要能够找出当前分辨率以及我认为您可以从 WMI 类Win32_VideoController获得的分辨率。