Probleme mit Controls/ "Senden" in Outlook klappt nicht

  • Hi,

    nachdem ich heute den ganzen Tag erfolglos rumprobiert habe, muss ich mich wohl nun doch um Hilfe bemühen.

    Und zwar will ich auf meinem Rechner (meistens an) ein Script laufen lassen, welches jeden Tag (sagen wir um 01:00 Uhr) eine E-Mail an eine bestimmte Adresse schicken soll.
    Mit _INetMail klappt das Mailerstellen wunderbar, allerdings habe ich dann Probleme, die Mail loszuschicken.
    Ich habe es mit ControlSend, Send, MouseClick, ControlClick... probiert, aber alles funktioniert nicht richtig...
    Ich benutze Outlook und leider ist der "Senden"-Button leider kein Button, sondern hängt mit der ganzen Zeile zusammen oder so. (hab mit dem Window Info Tool nachgeguckt) Deshalb habe ich es auch mit MousClick probiert und so...
    Auf jeden Fall könnte man die Mail mit Strg+Enter abschicken, aber so wie es aussieht nur, wenn das Fenster aktiv ist. Wenn nicht dann öffnet man mit der Tastenkombination neue Mails.
    Ein Problem war zum Beispiel auch, dass ich, wenn die Tastenkombi gedrückt werden soll, die auf einmal mehrmals "gedrückt" wird, da haben sich auf einmal bis zu 14 Mails geöffnet (für mich unerklärlich... ?( ), aber auch irgendwie jedesmal ne unterschiedliche Anzahl...

    Wahrscheinlich denke ich wieder zu kompliziert und eigentlich ist es ganz einfach... na ja...
    Hier jetzt erstmal bisschen Code (der nich funzt...):

    Spoiler anzeigen
    [autoit]

    #include <INet.au3>

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

    $ato= @DesktopDir&"\Witze\Witze.txt" ;Pfad wo sich die Witzedatei befindet (pro Zeile ein Witz)
    FileOpen($ato,0)
    $count= 1 ;soll später hochgezählt werden für immer den nächsten Witz
    $witz= FileReadLine($ato,$count)

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

    $adress= "test@xyz.de" ;als Array möglich zwecks mehrerer Adressen ?
    $subject= "Witz des Tages"
    $body= $witz

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

    _INetMail($adress,$subject,$body) ;öffnet Outlook (bei mir)
    ;Sleep(100000) --> damit Fenster auch wirklich offen ist

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

    ;ControlClick("Witz des Tages - Nachricht","","","{LCTRL}{Enter}")
    If WinActive("Witz des Tages - Nachricht")=1 Then
    ;Send("^{ENTER}")
    MouseClick("left",44,90)
    EndIf

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

    ;ControlSend("^{ENTER}{CTRLUP}")

    [/autoit]

    Oh man, brauche dringend Hilfe!!!

    Danke schonmal dafür!

  • Habs jetzt so:

    [autoit]

    Sleep(5000)
    _INetMail($adress,$subject,$body);öffnet Outlook (bei mir)
    Sleep(5000)
    WinActivate("Witz des Tages - Nachricht")
    Sleep(5000)
    Send("^{ENTER}")

    [/autoit]

    So gehts fürs erste...

    EDIT:

    Spoiler anzeigen
    [autoit]

    #include <INet.au3>
    #include <Array.au3>

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

    Dim $adress[5]
    $ato= @DesktopDir&"\Witze\Witze.txt" ;Pfad wo sich die Witzedatei befindet (pro Zeile ein Witz)
    $adress[1]= "test@xyz.de"
    $adress[2]= "test2@xyz.de"
    $adress[3]= "test3@xyz.de"
    $subject= "Witz des Tages"
    $count= 1

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

    Do
    $witz= FileReadLine($ato,$count)
    $count= $count+1
    $body= $witz
    $i=1
    While $i<4
    Sleep(5000)
    _INetMail($adress[$i],$subject,$body)
    Sleep(5000)
    WinActivate("Witz des Tages - Nachricht")
    Sleep(3000)
    Send("^{ENTER}")
    $i=$i+1
    WEnd

    Until $count=10

    [/autoit]

    Das funktioniert erstmal.
    Also, mal angenommen, mein Rechner läuft immer, ohne Unterbrechung, also könnte das Script ja auch immer laufen. Wie kann ich einstellen, dass es immer nachts um 01:00 uhr das und das macht? Hab da irgendwie keine Idee im moment...

    2 Mal editiert, zuletzt von heenzketchup (4. August 2009 um 07:15)

  • Kannst es ja mit geplanten tasks versuchen. Systemsteuerung --> Geplante Tasks (klassische Ansicht)

    mfG
    Charlie

    Edit:
    Ist das korrekt so?

    [autoit]

    Send("^{ENTER}")

    [/autoit]

    Wird das nicht so gemacht?

    [autoit]

    Send("{ENTER}")

    [/autoit]
  • Danke, mal sehen, bin grad am testen.

    das "^{ENTER}" ist richtig, weil ich nich nur enter sondern gleichzeitig auch Strg "drücken" muss

  • kein problem!

    Jetzt stellt sich mir allerdings ein neues Problem:

    ich habe ja eine textdatei, in der jeder witz in einer zeile steht. Ich dachte ja erst, dass das script nicht neu startet, sondern durchläuft. Jetzt will ich das ja aber mit dem Taskplaner machen. Allerdings: wie soll ich dann die Variable zum Zeilen-zählen hochzählen??? dadurch, dass das script immer neu startet, fängt ja das zählen auch immer wieder von vorne an.
    Tja, und jetzt? Hat einer ne Idee?

    • Offizieller Beitrag

    Benutze eine INI Datei und speichere den Zählerwert darin ab .

  • man man!!
    warum nicht alle nötigen infos in ne ini schreiben und der Taskplaner war nur ein vorschlag, ich würde den nicht verwenden, es schien nur eine schnelle lösung zu sein

    du lässt dein code wirklich am besten immer laufen....

    [autoit]

    #include <INet.au3>
    #include <Array.au3>

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

    Dim $adress[5]
    $sendet = False

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

    while 1
    If @HOUR = 1 And Not $sendet Then
    $ato= @DesktopDir&"\Witze\Witze.txt" ;Pfad wo sich die Witzedatei befindet (pro Zeile ein Witz)
    $adress[1]= "test@xyz.de"
    $adress[2]= "test2@xyz.de"
    $adress[3]= "test3@xyz.de"
    $subject= "Witz des Tages"
    $count= 1

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

    Do
    $witz= FileReadLine($ato,$count)
    $count= $count+1
    $body= $witz
    $i=1
    While $i<4
    Sleep(5000)
    _INetMail($adress[$i],$subject,$body)
    Sleep(5000)
    WinActivate("Witz des Tages - Nachricht")
    Sleep(3000)
    Send("^{ENTER}")
    $i=$i+1
    WEnd

    MsgBox(0,"test","count= "&$count)
    Until $count=10
    $sendet = True
    ElseIf @HOUR = 2 And $sendet Then
    $sendet = False
    Else
    sleep(1000)
    EndIf
    WEnd

    [/autoit]

    das wirds tun

    Dies ist ein Arzeneimittel.
    Bei Risiken und Haluzinationen fressen sie die Packungsbeilage und schlagen Sie ihren Arzt oder Apotheker.
    Jede Haftung wird abgelent.

    Vielen Dank für Ihre Kundentreue.
    mfg. TimBlo

    Aperture Science

    http://www.youtube.com/watch?v=Y6ljFaKRTrI