【问题标题】:Windows: Open program in specific screen locationWindows:在特定屏幕位置打开程序
【发布时间】:2015-08-21 19:44:01
【问题描述】:

在工作中,我有一组批处理文件和脚本,我用它们来自动化我需要在早上打开的所有程序(以及其他在晚上关闭它们的程序),以节省时间和精力。问题是,所有窗口都在他们选择的任何位置打开,因为大部分信息都会在一夜之间在虚拟桌面上被清除。

我看到人们谈论桌面管理器和使此类任务更容易的附加程序,但由于限制,我没有能力安装这样的程序。我也无权编辑注册表文件,而且我永远无法确定注册表文件是否会保持不变或在晚上被擦除和重新映像。因此,在存储的先前位置重新打开似乎已经结束。这意味着 AutoHotKeycmdow 和大多数 .exe 程序选项已停止运行。

基本上我正在寻找的是一种重新定位打开窗口或在特定位置打开窗口的方法,使用批处理文件或 vbs。最好是相对于屏幕而不是其他窗口的位置,因为我使用多个显示器。

我愿意使用 powershell 或其他可能的选项,但这些可能超出了我的经验。似乎我要问的是不存在或不可能的,但我希望也许有人有一个想法。我不介意复杂的代码,但我不知道从哪里开始,有什么建议吗?

【问题讨论】:

标签: windows powershell batch-file vbscript


【解决方案1】:

看起来有人已经在这里回答了这类问题:

Other post on set many programs window size and position

您还可以使用 C# 并使用 powershell 中的 cmdlet 和 c# 作为后端在其上映射 powershell。这是 c# 中的一个示例,只是谷歌如何在 powershell 中制作 cmdlet。

Example in c#

【讨论】:

    【解决方案2】:

    批处理文件无法做到这一点。 VBScript 可以使用 Windows 脚本宿主对象模型来完成此操作。

    Dim WshShell
    Set WshShell = CreateObject("WScript.Shell")
    WshShell.Run(strCommand, [intWindowStyle: See below], [bWaitOnReturn: TRUE/FALSE])
    Set WshShell = Nothing
    

    intWindowStyle 值:

    0 - 隐藏窗口并激活另一个窗口。
    1 - 激活并显示一个窗口。如果窗口被最小化或最大化,系统会将其恢复到原来的大小和位置。应用程序应在第一次显示窗口时指定此标志。 2 - 激活窗口并将其显示为最小化窗口。 3 - 激活窗口并将其显示为最大化窗口。
    4 - 以最近的大小和位置显示窗口。活动窗口保持活动状态。
    5 - 激活窗口并以其当前大小和位置显示它。
    6 - 最小化指定窗口并激活 Z 顺序的下一个顶级窗口。
    7 - 将窗口显示为最小化窗口。活动窗口保持活动状态。
    8 - 以当前状态显示窗口。活动窗口保持活动状态。
    9 - 激活并显示窗口。如果窗口被最小化或最大化,系统会将其恢复到原来的大小和位置。应用程序在恢复最小化窗口时应指定此标志。
    10 - 根据启动应用程序的程序状态设置显示状态。

    不确定 PowerShell。 :/

    【讨论】:

    • 是的,问题在于大多数程序存储“最新大小和位置”的方式取决于存储在可能随时擦除的位置的数据。我在想 powershell 或其他类型的脚本可能有更好的选择,但我也希望我错过了一些我更了解的东西。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-10-05
    • 1970-01-01
    • 1970-01-01
    • 2014-06-14
    • 1970-01-01
    • 2019-06-30
    • 2019-06-03
    相关资源
    最近更新 更多