Programm in den System Tray minimieren

  • Hi,
    ich will dass mein Programm sobald es minimiert wird aus der Taskleiste verschwindet und in den Systemtray kommt.
    Andersherum soll es solange es maximiert ist kein Systemtray icon haben sondern in der Taskleiste dargestellt werden.

    Es gibt zwar ein paar Threads hier im Forum dazu aber irgendwie will das bei mir nicht so ganz...
    Eigentlich müsste man doch mit WinGetState feststellen können ob da Fenster maximiert ist, aber da funktioniert auch nicht. :(

    Lg, kojoma

  • So?

    Spoiler anzeigen
    [autoit]

    #NoTrayIcon
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>

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

    Opt('GUIOnEventMode', 1)
    Opt('TrayOnEventMode', 1)
    Opt('TrayMenuMode', 1)

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

    $hGui = GUICreate('Test', 300, 300)
    GUISetOnEvent($GUI_EVENT_CLOSE, '_Exit')
    GUISetOnEvent($GUI_EVENT_MINIMIZE, '_Minimize')
    TraySetOnEvent( -7, '_Restore')

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

    GUISetState()

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

    While 1
    Sleep(2000)
    WEnd

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

    Func _Exit()
    Exit
    EndFunc

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

    Func _Minimize()
    TraySetState(1)
    GUISetState(@SW_HIDE)
    EndFunc

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

    Func _Restore()
    TraySetState(2)
    GUISetState(@SW_SHOW)
    EndFunc

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