Nabend, da ich immer Programme offen hab die ich aber nur machmal nachschaue (Kontrollprogramme, VLC, etc.) habe ich mich immer geärgert, das ich die Taskleiste dicht habe. Es gibt natürlich Programme, die sich in die Programme einklingen und diese dann in den Systemtray ablegen, aber ich wollte auch nicht soviele Symbole daunten haben .
Also zu dem Skript, es ist noch recht einfach gehalten und hat auch bestimmt noch Bugs, aber ich wollte es doch schon mal posten. Wenn das Skript gestartet ist, kann man jedes Fenster was grade aktiv ist durch Strg+Alt+v verschwinden lassen, wenn man auf das Script-Icon klickt kann man dort Programme anzeigen klicken und bekommt eine Liste mit den versteckten Programmen. Wird das Programm beendet (natürlich nicht wenn der Prozess gekillt wird) dann werden alle versteckten Fenster wiederhergestellt.
Spoiler anzeigen
; Includes
#include <GUIConstants.au3>
#Include <Constants.au3>
#Include <WinAPI.au3>
#include <array.au3>
; Optionen
Opt("TrayMenuMode",1) ; Default tray menu items (Script Paused/Exit) will not be shown.
; Konstanten
Const $SW_HIDE = 0
Const $SW_SHOW = 1
; Variablen / Arrays
Dim $arrTitel[1] ;Fenstertitel
Dim $arrwHnd[1] ;Windowhandle
Dim $hWnd ;für aktives Windowhandle
Dim $anzahl ;Anzahl der versteckten Fenster
Dim $selID ; ausgewälter Listenindex
; GUI
Global $frmShow = GUICreate("Versteckte Fenster", 800, 500)
GUICtrlCreateLabel("Versteckte Fenster:", 30, 10)
$liste = GUICtrlCreateList("",30,25, 740,400)
$cmdrestore = GUICtrlCreateButton("Anzeigen",30,430,120)
$cmdcloseliste = GUICtrlCreateButton("Schliessen",180,430,120)
GUISetState(@SW_HIDE)
; Defaultwerte
$arrTitel[0] = 0
$arrwHnd[0] = 0
$hWnd = _WinAPI_GetDesktopWindow()
$anzahl = 0
$selID = -1
; Hotkeys
HotKeySet("^!v","AktivesVerstecken")
HotKeySet("^!b","Beenden")
; Tray Menü
$restore = TrayCreateItem("Programme anzeigen") ;Hilfe anzeigen
$helpitem = TrayCreateItem("Hilfe") ;Hilfe anzeigen
$aboutitem = TrayCreateItem("Über") ;Über... anzeigen
TrayCreateItem("")
$exititem = TrayCreateItem("Exit") ;Programm beenden
TraySetState()
While 1
$msg = TrayGetMsg()
$msgGUI = GUIGetMsg()
Select
Case $msg = $aboutitem
Msgbox(64,"Über:","Erstellt von J. Kröger")
Case $msg = $exititem
Beenden()
Case $msg = $helpitem
Msgbox(64,"Hilfe:","STRG+ALT+V = Aktives Fenster verstecken" & @CRLF & "STRG+ALT+B = Programm beenden")
Case $msg = $restore
GUIDelete($frmShow)
GUICtrlDelete($liste)
GUICtrlDelete($cmdrestore)
GUICtrlDelete($cmdcloseliste)
Global $frmShow = GUICreate("Versteckte Fenster", 800, 500)
GUICtrlCreateLabel("Versteckte Fenster:", 30, 10)
$liste = GUICtrlCreateList("",30,25, 740,400)
For $i = 1 To $anzahl
GUICtrlSetData(-1,$arrTitel[$i])
Next
$cmdrestore = GUICtrlCreateButton("Anzeigen",30,430,120)
$cmdcloseliste = GUICtrlCreateButton("Schliessen",180,430,120)
GUISetState(@SW_SHOW)
Case $msgGUI = 0
ContinueLoop
Case $msgGUI = $liste
$selID = _ArraySearch($arrTitel,GUICtrlRead($liste),1)
Case $msgGUI = $cmdrestore
If $selID <> -1 Then
If _WinAPI_ShowWindow($arrwHnd[$selID],$SW_SHOW) Then
$anzahl -= 1
_ArrayDelete($arrwHnd,$selID)
_ArrayDelete($arrTitel,$selID)
For $i = 1 To $anzahl
$strLen = StringLen($arrTitel[$i]) -2
If $i < 10 Then
$arrTitel[$i] = "0" & $i & StringMid($arrTitel[$i],3)
Else
$arrTitel[$i] = $i & StringMid($arrTitel[$i],3)
EndIf
Next
EndIf
GUIDelete($frmShow)
EndIf
Case $msgGUI = $cmdcloseliste
GUIDelete($frmShow)
EndSelect
WEnd
Func AktivesVerstecken()
$hWnd = WinGetHandle("")
If _ArraySearch($arrwHnd,$hWnd,1) = -1 Then
$anzahl += 1
_ArrayAdd($arrwHnd,$hWnd)
If $anzahl < 10 Then
_ArrayAdd($arrTitel,"0" & $anzahl & "-" & _WinAPI_GetWindowText($hWnd))
Else
_ArrayAdd($arrTitel,$anzahl & "-" & _WinAPI_GetWindowText($hWnd))
EndIf
_WinAPI_ShowWindow($hWnd,$SW_HIDE)
EndIf
EndFunc
Func Beenden()
If $anzahl > 0 Then
For $i = 1 To $anzahl
_WinAPI_ShowWindow($arrwHnd[$i],$SW_SHOW)
Next
EndIf
Exit 0
EndFunc
Vielleicht kann es ja einer gebrauchen.