使用AutoHotkey查找新的电子邮件窗口与已发送的电子邮件窗口

时间:2013-09-26 14:44:36

标签: email automation autohotkey outlook-2010

我正在尝试创建一个热键,它将在Windows资源管理器中复制文件,翻到我打开的新草稿电子邮件并附加它。我将假设将打开零个或一个新的草稿电子邮件窗口。如果有多个,我只需要一个,希望它是正确的。这是一个互动过程。我的麻烦在于编写一个IfWinExist,它可以区分打开的发送电子邮件窗口和打开的新草稿电子邮件窗口。我怎么能分辨出来呢? 我正在使用Outlook 2010和AutoHotkey v1.1.12.00

感谢您的帮助!

1 个答案:

答案 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),窗口间谍会为您提供该信息。