我正在尝试创建一个热键,它将在Windows资源管理器中复制文件,翻到我打开的新草稿电子邮件并附加它。我将假设将打开零个或一个新的草稿电子邮件窗口。如果有多个,我只需要一个,希望它是正确的。这是一个互动过程。我的麻烦在于编写一个IfWinExist,它可以区分打开的发送电子邮件窗口和打开的新草稿电子邮件窗口。我怎么能分辨出来呢? 我正在使用Outlook 2010和AutoHotkey v1.1.12.00
感谢您的帮助!
答案 0 :(得分:2)
这是一个注释代码示例:
SetTitleMatchMode, 2
/* Choose the window title acoording to your language:
* English: Message
* German: Nachricht
* ...
*/
msgWin := "- Message ahk_exe outlook.exe"
WinGet, hwndList, List, %msgWin%
Loop % hwndList
{
aHwnd := hwndList%A_Index%
WinGetTitle, ttl, % "ahk_id " aHwnd
ControlGetText, btnText, Button1, ahk_id %aHwnd%
/* If you want to be sure, check for the text of the send button:
* English: &Send, German: &Senden, ...
*/
if(!btnText || !InStr(btnText, "Send")) {
MsgBox, Not a draft window:`n%ttl%
} else {
MsgBox, Draft window:`n%ttl%
}
}
它基本上会检查每个打开的消息窗口,如果其中有发送按钮(对我来说,它是Button1
)。如果没有这样的按钮,则不是草稿
如代码的注释中所述,您必须调整与语言相关的标识符。您可能还需要更改控件名称(Button1
),窗口间谍会为您提供该信息。