Bestimmte Wörter in einer Mail suchen? (Outlook)

  • Hallo zusammen,
    ich suche eine Möglichkeit, dass Autoit bei einer Mail nach bestimmten Wörtern sucht..

    Z.B. Kommt eine E-Mail an in Outlook 2003, Autoit sieht in in der rechten Spalte und schaut ob da ein Wort drin vorkommt (z.B. Fritz)...
    Wenn ja, soll Funktion xyz ausgeführt werden...

    Nun dachte ich mein erster Schritt wäre, in eine Variable den E-Mail Inhalt zu speichern. - Hier scheiter ich jedoch :(

    - Die Mails sind alle im Textformat ! Keine Html-Mail ist dabei.

    Hat jemand von Euch eine Lösung?

    Auf autoitscript.com habe ich im Forum ein Script gefunden. Es tut genau das was ich will, aber mit dem Notepad...

    Spoiler anzeigen
    [autoit]


    ; My first DLLCall
    ; ptrex

    [/autoit] [autoit][/autoit] [autoit]

    #include <GUIConstants.au3>
    #Include <date.au3>
    #include <Array.au3>
    #include <GuiEdit.au3>
    Opt("WinTitleMatchMode", 4); Allow ClassName lookup

    [/autoit] [autoit][/autoit] [autoit]

    ;Global Const $EM_GETLINE = 0xC4

    [/autoit] [autoit][/autoit] [autoit]

    Dim $LineCount
    Dim $LineNum
    Dim $Ret
    Dim $LineLen
    Dim $FirstCharPos
    Dim $Buffer

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Const $Applhandle = WinGetHandle("classname=rctrl_renwnd32")
    Const $Ctrlhandle = ControlGetHandle("","",2748 )

    [/autoit] [autoit][/autoit] [autoit]

    WinWaitActive($Applhandle)
    sleep(500)
    WinHandle()
    ;CtrlReadLineNum($Ctrlhandle)
    ;LineIndex($Ctrlhandle)
    ;LineLenght($Ctrlhandle)
    CtrlRead($Ctrlhandle)

    [/autoit] [autoit][/autoit] [autoit]

    Func WinHandle(); tested = OK
    $result = DllCall("user32.dll", "int", "MessageBox", "hwnd", 0, "str", "Window Active " & $Ctrlhandle, "str", "Handle Test" , "int", 0)
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func CtrlReadLineNum($Ctrlhandle); tested = OK
    $Ctrlread = _GUICtrlEditGetLineCount($Ctrlhandle)
    MsgBox(0,"Test","Line #" & " "& $Ctrlread)
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func LineIndex($Ctrlhandle); tested = OK
    $Ctrlread =_GUICtrlEditLineIndex($Ctrlhandle)
    MsgBox(0,"Test","Line Index" & " "& $Ctrlread)
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func LineLenght($Ctrlhandle); tested = OK
    $Ctrlread =_GUICtrlEditLineLength($Ctrlhandle)
    MsgBox(0,"Test","Line Lenght" & " "& $Ctrlread)
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func CtrlRead($Ctrlhandle); tested = OK
    $LineCount = _GUICtrlEditGetLineCount($Ctrlhandle)
    MsgBox(0, "Test", "Line #" & " " & $LineCount)
    For $LineNum = 0 To $LineCount - 1
    $FirstCharPos = _GUICtrlEditLineIndex($Ctrlhandle, $LineNum)
    MsgBox(0, "Test", "First Char Pos on Line IDX: " & $FirstCharPos)
    $LineLen = _GUICtrlEditLineLength($Ctrlhandle, $FirstCharPos)
    MsgBox(0, "Test", "Length: " & $LineLen)
    $Buffer = $LineLen
    $Ret = DllCall("user32.dll", "int", "SendMessage", "hwnd", $Ctrlhandle, "int", 0xC4, "int", $LineNum, "str", "")
    MsgBox(0, "Test", "Text is =" & " " & $Ret[4])
    Next
    EndFunc ;==>CtrlRead

    [/autoit]


    Const $Applhandle = WinGetHandle("classname=rctrl_renwnd32")
    Const $Ctrlhandle = ControlGetHandle("","",2748)

    habe ich selber angepasst.

    Wenn ich mit Au3Info auf das Vorschaufenster in Outlook zeige erhalte ich folgende Informationen:


  • [autoit]


    WinActivate ("Posteingang - Microsoft Outlook", "")
    $var = ControlGetText("Posteingang - Microsoft Outlook", "", "2748")
    Msgbox (4096, "Test", $var)

    [/autoit]

    Liefert mir nichts zurück ....

    • Offizieller Beitrag

    Hallo

    Das habe ich ca vorm halben Jahr programmiert, eigentlich nur für den eigengebrauch, habs jetzt aber so umgeschrieben, dass man es auch so Benutzen kann :)

    Spoiler anzeigen
    [autoit]

    Global Const $oOutlookFolderInBox = 6

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    _Search4OutlMessage("Fritz")
    Sleep(60000) ; Warte eine minute, dann scheck er alles nochmal
    WEnd

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func _Search4OutlMessage($sText)
    ;by GtaSpider
    Local $oOutlook,$oMAPI,$InboxItems,$Pos,$Nachricht
    $oOutlook = ObjCreate("Outlook.Application");Starte das Outlook Com Objekt
    $oMAPI = $oOutlook.GetNameSpace ("MAPI")
    $InboxItems = $oMAPI.GetDefaultFolder ($oOutlookFolderInBox).Items;Lese alle daten aus der "Inbox"

    [/autoit] [autoit][/autoit] [autoit]

    For $Pos = $InboxItems.Count To 1 Step - 1

    [/autoit] [autoit][/autoit] [autoit]

    $Nachricht = $InboxItems.Item ($Pos)

    [/autoit] [autoit][/autoit] [autoit]

    If StringInStr($Nachricht.Body, $sText) Then ; .Body mit z.B. .Subject tauschen, wenn im Betreff gesucht werden soll!
    MsgBox(0, $Nachricht.Subject, $Nachricht.Body)
    ;Wenn du die Nachricht nach dem Lesen löschen möchtest das aktivieren:
    ;~ $Nachricht.Delete()
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    Next

    [/autoit] [autoit][/autoit] [autoit]

    EndFunc ;==>_Search4OutlMessage

    [/autoit]

    Mfg Spider

  • Ich glaub ich mache etwas falsch :D

    Wenn ich es starte kommt nen paar Mal "Zugriffsversuch auf Outlook-Daten bla bla..."
    Ich klicke auf ja und nichts geschieht.... Nach ner min (glaube das sind deine sleep(60000) kommt wieder das gleiche und nix geschieht ^^

    // €dit: Es klappt ! :D Mein Fehler, hehe :)

    Merci Spider ! :)

    Einmal editiert, zuletzt von kesandal (29. August 2007 um 22:24)