Unterscheiden ob Software im Vordergrund oder im Hintergrund läuft

  • Hallo Zusammen,
    ich stehe mal wieder vor ein Problem. Ich nutze die Software "File Systems for Windows by Paragon Software". Diese kann Linux Dateisysteme in Windows bereitstellen. Allerdings gibt es einen hacken, den ich probiere zu umgehen. Diese Software nutz einen Dienst, der der Software erlaubt exklusive auf ein Laufwerk zuzugreifen. Wenn dieser Dienst läuft, dann kann kein anderes Tool Raw auf z.B. die SD-Karte zugreifen, um diese zu flashen. Daher wollte ich ein AuoIt-Skript schreiben, der den Dienst erst startet, dann das Programm ausführt und beim schließen des Programm den Dienst auch wieder stoppt. Es funktioniert auch soweit alles, bis zur Erkennung, ob die Software geschlossen ist. Leider schließt der X-Button die Software nicht, sondern diese begibt sich nur in den Hintergrund und bleibt als Systray-Icon vorhanden. Eine Abfrage mit WinGetState bringt auch keinen Erfolg, da schon beim nutzen eines x-beliebigen Button die Software ihren Status ändert und nicht wiederherstellt.

    Die einzige Möglichkeit wie ich dies unterscheiden könnte, wäre zu prüfen ob die Software im Vordergrund (siehe im Anhang Vordergrund.png) oder im Hintergrund (siehe im Anhang Hintergrund.png) läuft. Hat einer eine Idee, wie ich dies in AutoIt abbilden kann?

    Link zur Software: https://www.paragon-software.com/home/linuxfs-windows/

    Vielen Dank für eure Unterstützung!

    Gruß
    Homer J. S.

  • du kannst vielleicht deine Software über den extmounter.exe steuern und damit mounten und unmounten.

    Code
    C:\Program Files (x86)\Paragon Software\LinuxFS for Windows>extmounter.exe
    Usage:
            /list - show ext tree(disk/volume)
            /refresh disk# [volume#] -- update state of disk# [and volume#]
            /mount [/ro - read only] [/online - force online disk and volume] [/ugm [uid value] [gid value] [mode value]] [disk#,lvm#] [volume#] [mount point] [/p "password"] - mount volume(s)
            /umount [disk#,lvm#] [mount point] - unmount volume(s)
            /ugm disk# volume#
            /fsck [disk#,lvm#] [options]
            /mkfs [disk#,lvm#] [options]
            /logging on/off -- enable/diable extended logging

    Desweiteren kannst du den Status des Fensters so anfragen: (kann man sicherlich verbessern)

    MfG Schnuffel

    "Sarkasmus ist die niedrigste Form des Witzes, aber die höchste Form der Intelligenz."
    Val McDermid

    über mich...

    ich habe meine Erfahrungen hauptsächlich gesammelt in (grobe Übersicht):

    - RibbonBar Automation
    - MySQL Nutzung
    - GUIs in vielerlei Ausprägung
    - Nutzung von Powershell / Batch in AutoIt
    - Windows Automatisierung

    außerhalb von AutoIt:

    - Sprachen: PS, Batch, php, html(5), javascript, (perl eingeschränkt), vbs
    - Powershell (AD, WPF inkl. Multi-Threading, ...)
    - Deployment-Automatisierung ohne SCCM
    - Office-Nutzung mit COM-Object (AutoIt, PowerShell)
    - ActiveDirectory und alles was damit zusammenhängt
    - Hyper-V Clustering (Converged / Hyper Converged)
    - Serverhardware (Konfiguration, Aufbau, Architektur, Betrieb)

    Lieblingsthema:

    günstige Automatisierung von Vorgängen, für die andere Firmen viel Geld nehmen

    more to come ...

    Einmal editiert, zuletzt von Schnuffel (21. April 2025 um 14:09)

  • Hallo Homer J.S. ,

    du kannst dein Programm aber auch mir ProcessClose schließen.

    Beispiel einer Schleife, falls mehrere Instanzen offen sind.

    AutoIt
    While 1
    	If ProcessExists("meine.exe") Then
    		ProcessClose("meine.exe")
    	Else
    		ExitLoop
    	EndIf
    WEnd 

    Gruß gmmg