使用 vbs 按标题激活窗口



我正在使用的脚本:

  1. 推出雷鸟
  2. 创建新邮件
  3. 最小化消息框
  4. 将路径复制到所选文件夹

如何激活最小化的雷鸟消息框,知道它的标题?

下面的代码不起作用:

Set WshShell = CreateObject("WScript.Shell")  
Set WshExec = WshShell.Exec("""C:Program Files (x86)Mozilla Thunderbirdthunderbird.exe""")  
WScript.Sleep 2000  
WshShell.SendKeys("^n")  
WScript.Sleep 500 
PID = WshShell.AppActivate(WshExec.ProcessID)  
WshShell.Run("notepad")  
If PID Then  
WshShell.SendKeys("^k")  
Else  
MsgBox "Nothing!"  
End If

VBS的AppActivate包装了API的SetForegroundWindow。程序必须符合以下规则之一才能设置活动窗口。请注意,标准锁定时间为 2 秒 - 这是大多数人被抓住的地方。注意 VBScript 没有用户界面,因此不能作为前台窗口 - 程序启动后有 2 秒钟的时间设置窗口。

从 https://learn.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-setforegroundwindow

设置前景窗口

言论

前景窗口是位于 Z 顺序顶部的窗口。是的 用户正在使用的窗口。在抢占式多任务处理中 环境,通常应该让用户控制哪个窗口是 前景窗口。

Windows98/Me、Windows 2000/XP:系统限制哪些进程 可以设置前景窗口。进程可以设置前台窗口 仅当满足以下条件之一时:

  • 流程是前台流程。

  • 该过程由前台过程启动。

  • 进程收到最后一个输入事件。

  • 没有前台进程。

  • 正在调试前台进程。

  • 前台未锁定(请参见 LockSetForegroundWindow(。

  • 前台锁定超时已过期(请参阅系统参数信息中的SPI_GETFOREGROUNDLOCKTIMEOUT(。

  • Windows 2000/XP:没有菜单处于活动状态。

通过此更改,应用程序无法强制将窗口强制到 用户使用另一个窗口时的前台。相反 SetForegroundWindow 将激活该窗口(请参阅 SetActiveWindow(和 调用 FlashWindowEx 函数来通知用户。

最新更新