Email 使用AutoHokey查找新电子邮件窗口与已发送电子邮件窗口

Email 使用AutoHokey查找新电子邮件窗口与已发送电子邮件窗口,email,automation,autohotkey,outlook-2010,Email,Automation,Autohotkey,Outlook 2010,我正在尝试制作一个热键,它将在Windows资源管理器中复制一个文件,翻转到我打开的新草稿电子邮件并附加它。我将假设将有零个或一个新的草稿电子邮件窗口打开。如果不止一个,我就选一个,希望它是对的。这是一个互动的过程。我的问题是编写一个IfWinExist,它可以区分打开的已发送电子邮件窗口和打开的新草稿电子邮件窗口。我怎样才能分辨出区别呢? 我正在使用Outlook 2010和自动热键v1.1.12.00 谢谢你的帮助 下面是一个注释代码示例: SetTitleMatchMode, 2 /*

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


谢谢你的帮助

下面是一个注释代码示例:

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%
    }
}
它基本上检查每个打开的消息窗口,如果其中有发送按钮(对我来说,是
按钮1
)。如果没有这样的按钮,它就不是草稿。

如代码注释中所述,您必须调整语言相关标识符。您可能还需要更改控件名称(
按钮1
),window spy将向您提供该信息。

我建议您查看一下。该页面看起来非常有趣。我通常对COM很谨慎,但是当信息被很好地展示出来时,它是很诱人的!这是一个很好的例子。我真的很感谢你的帮助。我有点像一个AHK巫师,但我从来都不喜欢控制。我运气不好。这似乎是完美的工作,虽然!