AutoIt-Programm - minimize to tray icon only

  • Hallo,

    eigentlich existieren viele Foreneinträge und Tutorials, die in diese Richtung gehen. Aber entweder bin ich zu blöd sie zu verstehen oder mein Wunsch ist noch etwas spezieller. Folgendes versuche ich bisher erfolglos zu realisieren:

    - das AutoIT-Programm soll nicht über die Programmoberfläche geschlossen werden können - entweder soll das X oben rechts grau hinterlegt oder ganz ausgeblendet werden
    - wenn das Programm minimiert wird soll es aus der Taskleiste verschwinden und nur als System Tray Icon erscheinen (beim Klick auf das TrayIcon soll das Programm wieder aufschlagen)

    Falls mir jemand bei der Realisierung meiner Wünsche behilflich sein könnte, wäre ich sehr dankbar. :S :)

    • Offizieller Beitrag

    Dazu hatte ich mal ein Beispiel erstellt:

    Spoiler anzeigen
    [autoit]


    #include <GUIConstants.au3>
    Opt('TrayMenuMode', 3) ; Tray-Standardmenü ausschalten
    Opt('TrayAutoPause', 0) ; AutoPause ausschalten
    Opt('TrayIconHide', 1) ; Tray-Menü verstecken
    Global $TrayShow = TrayCreateItem('Test anzeigen') ; Tray-Menü erstellen
    Global $TrayExit = TrayCreateItem('Beenden') ; Tray-Menü erstellen
    TraySetClick(16) ; Rechte Maustaste für das Tray-Menü benutzen
    Global $GUI = GUICreate('Test', 640, 180, -1, -1) ; Fenster erstellen
    GUISetState() ; GUI-Fenster anzeigen
    While 1 ; MessageLoop-Schleife
    Switch GUIGetMsg() ; Anhand des eingetretenen GUI-Ereignisses die entsprechenden Befehle ausführen
    Case $GUI_EVENT_MINIMIZE ; Benutzer hat auf Minimieren geklickt
    Opt('TrayIconHide', 0) ; Tray-Menü anzeigen
    TraySetIcon(@SystemDir & '\shell32.dll', -24) ; Icon für Tray-Menü setzen
    GUISetState(@SW_HIDE, $GUI) ; Fenster verstecken
    Case $GUI_EVENT_CLOSE
    Exit ; Programm beenden
    EndSwitch
    Switch TrayGetMsg() ; Anhand des eingetretenen Tray-Ereignisses die entsprechenden Befehle ausführen
    Case $TrayShow ; wurde 'Anzeigen' aufgerufen, dann...
    Opt('TrayIconHide', 1) ; Tray-Menü wieder verstecken
    GUISetState(@SW_SHOW, $GUI) ; Fenster anzeigen
    GUISetState(@SW_RESTORE, $GUI) ; und wiederherstellen (minimieren rückgängig machen)
    Case $TrayExit ; Benutzer hat 'Beenden' ausgewählt
    Exit ; Programm beenden
    EndSwitch
    Wend

    [/autoit]