目标: 使用热键' C'模仿新电子邮件窗口'在Outlook中,类似于Gmail。
尝试:
c::
SetTitleMatchMode, 2
If Not WinActive("Message")
Send, ^n
return
问题: 这个脚本确实有效,但是在那个“新电子邮件”中。窗口' c' char被锁定,我在打字时无法使用它。
尝试过的解决方案: 我尝试添加并清空其他{}'但这似乎不起作用。想法?
环境: Windows 10 / Outlook 2016 +
答案 0 :(得分:0)
这可能是你想要的,
SetTitleMatchMode,2
#if WinActive("Microsoft Outlook")
{
c::
Send, ^n
return
}
这样,它允许在任何地方键入char'c',包括新的电子邮件窗口。但是,如果您在Outlook主窗口中,则会触发它,为您打开一个新的电子邮件窗口。
答案 1 :(得分:0)
当"Microsoft Outlook"
位于窗口标题中时,使用上下文相关标题匹配将 C 映射到 CTRL + N :
SetTitleMatchMode 2 ; All #If statements match anywhere in title
#IfWinActive Microsoft Outlook
c::^n
#IfWinActiv
答案 2 :(得分:0)
这很有用。我认为在我的情况下,如果窗口不活动,它需要具体知道要做什么,而在我的情况下,它是要触发常规的'c',我会认为逻辑是默认识别的。
c::
SetTitleMatchMode 2
IfWinActive, Outlook
Send, ^n
Else
send, c
return
答案 3 :(得分:0)
$c::
If (WinActive("Microsoft Outlook") { ;may/may not be "Microsoft Outlook' use window spy to find out more
send ^N ; if you got that to work then dont mess with this part
} else {
send {c}
}
Return
基本上,这会检查Outlook是否处于活动状态,然后发送^N
,如果不是,它将发送字符C。
但这并不是最好的主意:创建用于键入...的单键热键。
更好的主意:将热键(“ ::`之前的部分”)更改为$ ^!c
($是使发送c的任何其他热键都不会激活该键)
另一个方法是:
$~c::
If (WinActive(ahk_class "outlook.exe") { ; or something along the lines of that...
sleep 250
send ^N
}
Return
除了可以更好地保留c键的功能外,大多数情况下它都执行相同的操作,但是它可能会导致键入Outlook的问题,因此再次出现,
请考虑使用非键入单键热键,例如Rcontrol。热键中的〜表示不要撤消原始键功能。添加睡眠以确保在使用热键时不会将保留的c字符添加到新电子邮件中。
希望这会有所帮助(我相当确定这是可行的)我不使用Outlook,所以我不知道Outlook对这种事情的反应如何,也没有测试过,但是我知道我的AHK基础知识并确实对函数语法进行了双重检查,这对您很幸运,请阅读我的代码,因为它们对于这些代码段功能至关重要。
如果两个代码段均无法满足您的需求,则可能要添加&& If (Not WinActive("Message"))
;or whatwver the message window is called
,因为您的新消息窗口也称为Outlook,所以这会干扰键入。 / p>