我需要魔法来保持“Skype for Business”的激活

时间:2016-11-01 19:01:15

标签: vbscript autohotkey wsh lync-2013 skype-for-business

“Skype for Business”(以前称为“Microsoft Lync”)比我的女儿更难醒来。当它被最小化到任务栏时,单击图标以恢复它是非常慢的 - 如果它已经空闲了一段时间,它需要5-10秒才能恢复。这是一个经常被抱怨的已知问题(例如herehere),但未提供解决方案或解决方法。

然而,如果可能的话,我希望利用一丝希望。正如我上面提到的,Skype只有在闲置一段时间后才会无响应。如果用户正在积极使用它,那么它运行得很好。 所以...... 我想找到一种方法每小时左右“罐装”它 - 让它保持活跃状态​​。

我的初始策略:使用任务计划程序安排以下WScript(每小时):

Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.AppActivate "Skype for Business"     'give app focus
WScript.Sleep 100                             'give app time to load
WshShell.SendKeys "% r"                       'restore app 
WshShell.SendKeys "% n"                       'minimize app

如果应用已经最小化,这可以正常工作,但如果应用处于活动状态(聚焦),它将突然消失。 (如果我省略了最后一行,那么应用程序将弹出我当前正在处理的任何其他内容。)我尝试用这一行代替最后两行:

WshShell.SendKeys "% {ESC}"

...只是打开和关闭菜单。这样做效果更好,但它将焦点转移到Skype(尽管是暂时的),这会导致进一步的问题。它还取消隐藏任务栏并点亮Skype图标(好像我有一条消息在等待)。

问题:有谁知道我是否可以使用AutoHotKey来做这类事情?

基本上,我正在寻找可以执行此操作的某种脚本:确定Skype窗口当前是否处于活动状态;如果是的话,什么也不做。否则,向它发送一些不可见的命令(例如:最大化然后最小化),但在所有情况下都要将窗口恢复到以前的状态。

有什么建议吗? (非常感谢autohotkey脚本!)

1 个答案:

答案 0 :(得分:1)

如果隐藏窗口时Skype不会无响应,请尝试以下操作:

; Hide Skype after it has been inactive for 20 seconds:
SetTimer, hide_inactive_Skype_window, 1000
return

    hide_inactive_Skype_window:
IfWinNotActive, Skype for Business
    time++
else
    time := 0     ; reset
if (time = 20)    ; 20 seconds
{
    WinHide, Skype for Business
        time := 0     ; reset
}
return

; Use a hotkey to show/activate Skype:
    !s::  ; Alt+s
time := 0     ; reset
WinShow, Skype for Business
WinActivate, Skype for Business
return