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.

+++ WICHTIG: Dieser Beitrag und die Skripte werden (von mir) nicht mehr supported.  +++

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

10 Kommentare

  1. Martin

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

  2. Andy

    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.

  3. Martin

    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

  4. Andy

    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.

  5. Andreas

    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

  6. Christian Koch

    Servus Andy funktioniert das Script immer noch ?

  7. Andy

    Möglicherweise ja, hab’ nur noch eine privaten Installation und die scheint zu gehen.
    Ich hab’ mich geirrt, die Variante aus diesem Beitrag nutzt bei uns keiner mehr. Die einzig aktuell noch vorhandene MailStore Home läuft noch mit einem älteren Skript, siehe MailStore Home: Automatisch archivieren und bei Erfolg beenden

  8. Stefan

    Hallo Andy,

    bei mir funktioniert das Skript iwie nicht.
    Es offnet sich ein DOS-Fenster (in dem nichts passiert) sowie die MailStorHome Oberfläche, in der ebenfalls nichts passiert.

    Has Du einen Tipp?

    VG Stefan

  9. Andy

    Hallo Stefan,

    vielleicht ein falscher oder unvollständiger Pfad zur “MailStoreHome.exe”?

  10. Anguel

    Hallo, danke für die Infos, noch ein Tipp, was ich grade rausgefunden habe: Für Leute, die mehre Accounts haben kann man im Account-Fenster alle markieren und dann eine Verknüpfung auf dem Desktop erstellen, die enthält dann alle IDs:
    –id=”4,2,6,1,3,5″
    Wenn man die nun startet archiviert er dann alle Accounts auf einmal 😉
    Sehr schade, dass MailStore Home die Autoarchivierung für Homenutzer nicht zugänglich macht, als ob deren Emails weniger wichtig seien…
    Grüße
    Anguel

Schreibe einen Kommentar

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

© 2024 Andy's Blog

Theme von Anders NorénHoch ↑