Taskleisten Tab ausblenden. ($ws_ex_toolwindow)

  • Hallo zusammen,

    Ich versuche verzweifelt den Taskleisten Tab eines externen Fensters auszublenden ohne das ganze Fenster auszublenden, genauso wie bei $ws_ex_toolwindow.

    Ich hab schon google und hier das Forum durchgeforstet, leider ohne erfolg. Mit der WinApi komm ich ebenfalls nicht weiter. Ich hoffe ihr könnt mir auf die Sprünge helfen.

    • Offizieller Beitrag

    Hier mal ein Beispiel mit "Au3Info":

    Spoiler anzeigen
    [autoit]


    #include <WinAPI.au3>
    #include <WindowsConstants.au3>

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

    Opt('WinTitleMatchMode', 2)

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

    Global Const $GWL_EXSTYLE = -20
    Global Const $GWL_HWNDPARENT = -8

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

    Run('Au3Info.exe')
    WinWait('AutoIt')
    $hAu3Info = WinGetHandle('AutoIt')
    ConsoleWrite('Handle (Au3Info): ' & $hAu3Info & @CR)
    $hDesktop = _WinAPI_GetDesktopWindow()
    ConsoleWrite('Handle (Desktop): ' & $hDesktop & @CR)
    _WinAPI_SetWindowLong($hAu3Info, $GWL_HWNDPARENT, $hDesktop)
    _WinAPI_SetWindowLong($hAu3Info, $GWL_EXSTYLE, $WS_EX_TOOLWINDOW)

    [/autoit]
    • Offizieller Beitrag

    Rückgängig ist etwas komplizierter. Ich musste das Fenster minimieren und wiederherstellen, sonst war der Eintrag nicht in der Taskleiste.

    Spoiler anzeigen
    [autoit]


    #include <WinAPI.au3>
    #include <WindowsConstants.au3>
    #include <Constants.au3>

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

    Opt('WinTitleMatchMode', 2)

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

    Run('Au3Info.exe')
    WinWait('AutoIt')
    $hAu3Info = WinGetHandle('AutoIt')
    ConsoleWrite('Handle (Au3Info): ' & $hAu3Info & @CR)
    $hDesktop = _WinAPI_GetDesktopWindow()
    ConsoleWrite('Handle (Desktop): ' & $hDesktop & @CR)
    $style = _WinAPI_GetWindowLong($hAu3Info, $GWL_EXSTYLE)
    ConsoleWrite('$style: ' & Hex($style) & @CR)
    $parent = _WinAPI_GetWindowLong($hAu3Info, $GWL_HWNDPARENT)
    ConsoleWrite('$parent: ' & $parent & @CR)

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

    MsgBox(0, 'Msg', 'raus aus der Taskleiste...', 0, $hAu3Info)
    _WinAPI_SetWindowLong($hAu3Info, $GWL_HWNDPARENT, $hDesktop)
    _WinAPI_SetWindowLong($hAu3Info, $GWL_EXSTYLE, $WS_EX_TOOLWINDOW)

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

    MsgBox(0, 'Msg', 'und wieder rein...', 0, $hAu3Info)
    _WinAPI_SetWindowLong($hAu3Info, $GWL_HWNDPARENT, $parent)
    _WinAPI_SetWindowLong($hAu3Info, $GWL_EXSTYLE, $style)
    _WinAPI_ShowWindow($hAu3Info, @SW_MINIMIZE)
    _WinAPI_ShowWindow($hAu3Info, @SW_RESTORE)

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

    MsgBox(0, 'Msg', 'beenden', 0, $hAu3Info)
    WinClose($hAu3Info)

    [/autoit]
  • Hier die Lösung mit ObjCreateInterface (abgeändertes Beispiel aus der Hilfe)

    Spoiler anzeigen
    [autoit]

    #include <WinAPI.au3>
    #include <WindowsConstants.au3>

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

    Opt('WinTitleMatchMode', 2)

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

    Global Const $sCLSID_TaskbarList = "{56FDF344-FD6D-11D0-958A-006097C9A090}"
    Global Const $sIID_ITaskbarList = "{56FDF342-FD6D-11D0-958A-006097C9A090}"
    Global Const $sTagITaskbarList = "HrInit hresult(); AddTab hresult(hwnd); DeleteTab hresult(hwnd); ActivateTab hresult(hwnd); SetActiveAlt hresult(hwnd);"

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

    Global $oTaskbarList = ObjCreateInterface($sCLSID_TaskbarList, $sIID_ITaskbarList, $sTagITaskbarList)

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

    $oTaskbarList.HrInit()

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

    Run('Au3Info.exe')
    Global $hAutoItInfo = WinWait('AutoIt v3 Window Info')
    ConsoleWrite("Hide Taskbar" & @LF)
    $oTaskbarList.DeleteTab($hAutoItInfo)
    Sleep(3000)
    ConsoleWrite("Show Taskbar" & @LF)
    $oTaskbarList.AddTab($hAutoItInfo)

    [/autoit]