史前:
前段时间,Skype已指定 Ctrl + R 热键进行新的通话。无法禁用此设置。
有时候我将浏览器窗口与Skype窗口混淆并打电话给很多人,而不是刷新浏览器窗口(因为专业,我需要经常刷新浏览器窗口)。
所以我制作了一个脚本来防止将 Ctrl + R 热键发送到Skype窗口,它工作正常,但有时我无法发送 Ctrl + R 随处可见,不仅仅是Skype窗口。
代码:
;#NoTrayIcon
$^r::
WinGetClass, class, A
if (class != "TConversationForm")
Send ^r
return
已编译的二进制文件: http://random.net.ua/SkypePreventHotkey.exe
Autohotkey版本: 1.1.14.03
答案 0 :(得分:4)
我有两项改进:
#If(...)
用于上下文相关的热键。根据我的经验,由于各种原因,#If
更可靠。此外,您不必担心不受影响的窗口(例如,通过决定发送什么);事实上,如果#If...
条件出现错误,我相信不受影响的Windows会收到原始的本机击键。ahk_exe
的酷炫窗口选择器,可让您按进程名称识别窗口,而不是类别/标题。相同程序的不同窗口可能具有不同的类名,例如, Windows Media Player处于最小化/最大化模式。可能,Skype也有。这就是为什么对于更复杂的应用程序,通过进程名称识别通常是合理的。将这些建议混合到一个解决方案中,我们得到了这段简短的代码:
; I hope it's skype.exe ;)
#IfWinActive ahk_exe skype.exe
^r::return
而不是以编程方式说出"如果活动窗口不是Skype,我们发送 CTRL + R " 我们现在正在说"如果窗口 Skype,我们什么都不做" 。
答案 1 :(得分:0)
您可以尝试类似
的内容#InstallKeybdHook
SendMode, Input ; <---typically more reliable than send play mode
~$*^r:: ;<--- ~ means pass command to machine * means fire regardless of other hotkey modifiers.
Send, {Blind}{Ctrl Down}
Send, {R}
Send, {Ctrl Up}
return
我使用的是一个名为ACT的程序!对于我的数据库。每当我编写热键时,它就像发送这样的命令而不是你最初的命令(不是错误的)。
如果这不起作用,您可以尝试添加:Sleep,每次发送之间50(产生延迟)以查看是否有效。如果是这样,您可以将每个延迟减少1/2,直到它再次停止工作。
-islanq
答案 2 :(得分:0)
使用Autohotkey的另一种解决方案
#IfWinActive ahk_class tSkMainForm ;Skype
;prevent call
^r::
#IfWinActive