如何在VBScript中获取/设置每个应用程序窗口的位置和大小?

时间:2013-01-11 08:50:23

标签: windows user-interface vbscript window

我想编写一个脚本来整理我目前在屏幕上打开的窗口。

例如:将所有浏览器移至监视器1以及其他所有监视器2 例如:在监视器1上制作4个最大化的窗口,每个窗口占据屏幕上相同大小的象限 等。

我认为VBScript对此有好处吗?在Win7环境中我将使用哪些对象?

2 个答案:

答案 0 :(得分:3)

这在开箱即用的VBScript中是不可能的,因为它不提供对用于窗口管理的Windows API的访问。

AutoIt似乎是一个更好的工具。查看以下函数和宏:

  • WinMove - 移动窗口
  • _WinAPI_GetSystemMetrics (80) - 获取监视器数量
  • @DesktopWidth@DesktopHeight - 主要监控像素大小
  • _WinAPI_GetSystemMetrics(78)_WinAPI_GetSystemMetrics(79) - 完整的桌面宽度和高度

如果监视器维度不同,您可以使用WMI类Win32_DesktopMonitor及其ScreenWidthScreenHeigth属性来获取各个监视器维度。

答案 1 :(得分:1)

我不确定我是否会说VBS对此有好处,我想我更喜欢C ++,因为它涉及Windows API调用,我觉得在C ++中更容易,但这取决于你的技能和VBS可能没问题。

我要查看的API调用{@ 3}}或EnumWindows来查找要移动的窗口,然后FindWindow移动它们。

我认为如果您想将它们移动到辅助监视器,您应该能够将它移动到主监视器之外的位置(如果辅助监视器在左侧扩展,则可能是负位置)例)。 为此,您需要能够找到当前的分辨率以及我认为您可以从WMI类SetWindowPos获得的分辨率。