1

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

谢谢你的帮助!

4

1 回答 1

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),window spy 会为您提供该信息。

于 2013-09-27T07:03:08.010 回答