在 windows 之间切换

Switching between windows

背景:我们的呼叫中心有特殊的 "Main" 程序可以在其中工作。来电时显示"small pop-up window"。此外,我们还有浏览器式 CRM。所有这些都是 运行 on Windows 7. 来电时,IE 中的客户端页面正在加载。因此,呼叫中心工作人员要查看客户端页面,必须单击 IE 选项卡中的任务栏。当他这样做时,IE window 显示,但 "small pop-up window" 也显示在上面。所以,目标是自动化它:工作人员不想点击 IE。

现在代码:

GetIeInstance()
{
  For pwb in ComObjCreate( "Shell.Application" ).Windows
   {
    If InStr(pwb.FullName, "iexplore.exe" )
    {
      Return pwb
    }
  }
  Return 0
}

ComObjError(false)

Loop
{
 ie := GetIeInstance()

 if (hran != ie.LocationURL) 
    {
    WinActivate, ahk_class IEFrame
    WinWaitActive, ahk_class IEFrame
    }

hran := ie.LocationURL

 Sleep, 100
}

很明显:当我们接到新的收入电话时(因此,在 IE 中加载了新的客户端页面),Windows 专注于 IE window。但它无法正常工作,因为在一秒钟后 Windows 重新聚焦到 "Main" 程序 window(IE window "blink")。添加

Winset, Alwaysontop, , ahk_class IEFrame

没有帮助。知道如何解决吗? (或者如何模拟点击任务栏上的 IE 选项卡?)

修复它! 添加

sleep, 2000

之前

WinActivate, ahk_class IEFrame

拯救世界