MailStore Home: Versteckt ausführen und Archivieren mit Rückgabewert

Zum Thema Automatisieren von MailStore Home gab es bereits Beiträge:

MailStore Home: Automatisch archivieren und bei Erfolg beenden

MailStore Home von 4.2 auf 5.0 updaten + Automatisierung der Archivierung

Auf Basis des letzten Beitrags folgt nun eine etwas aufgebohrtere Variante.

Gleich Vorweg, es gibt zwei Möglichkeiten, MailStore Home versteckt auszuführen. Die erste bietet die Möglichkeit einer Auswertung, hat aber den Nachteil, das, wenn auch nur kurz, das eine oder andere Fenster erscheint.

Teilweise versteckt ausführen mit Auswertung

In der vorigen Variante war es so, das bei Erfolg MailStore Home geschlossen wurde. Das Ganze wurde recht simple umgesetzt, in dem in der Fortschrittsanzeige nach dem entsprechenden Abschlusssatz gesucht wurde.

Die Prüfung auf den Abschluss der Archivierung erfolgt nun auf Basis des vorhandenseins der Schaltfläche „Details…“. Diese erscheint in der Fortschrittsanzeige erst, wenn die Aufgabe abgeschlossen wurde. Als nächstes wertet man aus, ob die Archivierung erfolgreich war oder eben nicht.

Diese erweiterte Version ermöglicht über die Auswertung des Rückgabewertes im Anschluss an die Ausführung der Archivierung dann z.B. eine Alarmeriung per Mail o.ä.

Das AutoIt-Skript inkl. Kommentare sieht dann so aus:

; AutoIt TrayIcon ausblenden

 #NoTrayIcon

; Parameter übergeben 
 
 $MailStoreCMD = $CmdLine[1]

; MailStore Home ausführen 

 Run($MailStoreCMD, "", @SW_HIDE)

; Das Auslesen von verstecktem text aktivieren

 Opt ("WinDetectHiddenText", 1)
 
; Die Fortschrittsanzeige ausblenden

While 1

; If WinExists ("MailStore Home") Then
  ; WinSetState ("MailStore Home", "", @SW_HIDE) <- verhindert den erfolgreichen Start des Programms
  ; WinSetState ("MailStore Home", "", @SW_MINIMIZE) <- Dann erscheint wieder das Hauptfenster
; EndIf

 If WinExists ("Fortschrittsanzeige") Then
  WinSetState ("Fortschrittsanzeige", "", @SW_HIDE)
  ExitLoop
 EndIf
 
WEnd

; Auf den Abschluss der Archivierung warten und den Rückgabewert ermitteln
; 0 = Alles OK
; 1 = Fehler/Warnung

While 1

  If WinExists ("Fortschrittsanzeige", "Details...") Then
   If WinExists ("Fortschrittsanzeige", "Der Vorgang wurde erfolgreich abgeschlossen.") Then
    $ExitCode = 0
   Else
    $ExitCode = 1
   EndIf
   ; If WinExists ("Fortschrittsanzeige", "Der Vorgang wurde abgeschlossen mit Fehlern.") Then $ExitCode=1
   ProcessClose ("MailStoreHome.exe")
   Exit ($ExitCode)
  EndIf
  Sleep (500)
  
WEnd

Aufgerufen als kompilierte Exe-Datei wird es dann zusammen mit MailStoreHome:

start /wait "" HMSHwE_x64.exe "MailStoreHomePortable\Application\MailStoreHome.exe /c archive --id=1"

Der Rückgabewert kann wie gewohnt per Errorlevel abgefragt werden. 0 bedeuet Erfolgreich, größer als 0 Warnung/Fehler.

start /wait "" HMSHwE_x64.exe "MailStoreHomePortable\Application\MailStoreHome.exe /c archive --id=1"
if %errorlevel% gtr 0 smtpsend.exe...

Download

Das Archiv enthält den Quellcode und jeweils eine Exe-Datei für 32- und 64-bit.

HMSHwE.zip

Nebenbei bemerkt: HMSHwE bedeutet „Hide MailStore Home with Errorlevel“

Vollständig versteckt ausführen ohne Auswertung

Um MailStore Home vollständig versteckt auszuführen kann man auf die „RunCompletelyHidden.exe“ aus dem Beitrag AutoIt: Alle Fenster eines Prozesses ausblenden zurückgreifen:

RunCompletelyHidden.exe C:\Skripte\MailStoreHome.cmd
MailStoreHome.cmd:
start "" C:\MailStoreHomePortable\Application\MailStoreHome.exe /c archive --id=1

Diese Methode hat allerdings den Nachteil, das man (bislang) nicht den Status bzw. Text der „Fortschrittsanzeige“ abrufen kann. Folglich weiß man nicht, mit welchem Ergebnis der Job abgeschlossen wurde.

Um MailStore Home dann dennoch zu beenden könnte man nach einer Pause den Prozess beenden. Folgende Zeilen zur „MailStoreHome.cmd“ hinzufügen:

timeout /t 360
taskkill /im mailstorehome.exe /f

5 Kommentare

  • Bekomme den Fehler „Der Wartezustand wurde aufgrund eines abgebrochenen Mutex Beendet.“

  • Das ist meines Wissens nach eine Fehlermeldung vom .NET-Framework und AutoIt nutzt kein .Net, da wäre also erstmal zu klären, was bei Windows und/oder MailStore schief läuft.

  • Hallo,
    bin auf der Suche nach einer Möglichkeit der automatisierten Sicherung meiner Mails mit dem Programm MailStore Home hier gelandet.
    Läuft der hier beschriebene Weg auch noch mit der jetzt aktuellen Version des Programms?

    Kann man einfach die Befehle für den eigenen PC anpassen oder muß noch auf etwas besonderes geachtet werden?

    Danke

  • Hallo Martin,

    > Läuft der hier beschriebene Weg auch noch mit der jetzt aktuellen Version des Programms?

    Ja, funktioniert auch mit MailStore Home 13

    > Kann man einfach die Befehle für den eigenen PC anpassen oder muß noch auf etwas besonderes geachtet werden?

    Kann man anpassen. Pfade, ID(s) und ggf. die richtige Exe wenn nicht die Portable Ausgabe verwendet wird wäre zu beachten.

  • Hallo zusammen,

    ich nutze das HMSHwE Skipt nun ein paar Tage. Es läuft ganz gut. Nur stelle ich ab und zu fest, dass der Prozess in der cmd hängen bleibt. Mal bei noch geöffneter MailstoreHome.exe und mal ist keine MailstoreHome.exe mehr geöffnet. Woran kann dies liegen?
    mfg

    Version: Mailstore Home 13 portabel – Intervall 1h

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.