- Offizieller Beitrag
Wenn Du von Hide und Show sprichst, meinst Du doch wohl Fenster und nicht Prozesse, nicht wahr?
Dementsprechend solltest Du nicht ProcessList benutzen, sondern WinList.
Hier ist mal ein Beispielscript, mit dem man Fenster anzeigen, verstecken und schließen kann:
Spoiler anzeigen
#include <Array.au3>
#include <GUIConstantsEx.au3>
#include <GuiListView.au3>
#include <ListViewConstants.au3>
Global $iOld = -1
$hGui = GUICreate('Window-Manager', 640, 480)
$hWinList = GUICtrlCreateListView('Window-Title|Handle|Status', 5, 5, 630, 430)
GUICtrlSendMsg($hWinList, $LVM_SETCOLUMNWIDTH, 0, 400)
GUICtrlSendMsg($hWinList, $LVM_SETCOLUMNWIDTH, 1, 110)
GUICtrlSendMsg($hWinList, $LVM_SETCOLUMNWIDTH, 2, 60)
$hClose = GUICtrlCreateButton('Close', 390, 450, 60, 22)
$hShow = GUICtrlCreateButton('Show', 470, 450, 60, 22)
$hHide = GUICtrlCreateButton('Hide', 550, 450, 60, 22)
GUISetState()
WinSetOnTop($hGui, '', 1)
While True
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE
Exit
Case $hHide
$iSelect = ControlListView($hGui, '', $hWinList, 'GetSelected')
If $iSelect <> '' Then
$hWindow = HWnd(ControlListView($hGui, '', $hWinList, 'GetText', $iSelect, 1))
WinSetState($hWindow, '', @SW_HIDE)
$iOld = -1
EndIf
Case $hShow
$iSelect = ControlListView($hGui, '', $hWinList, 'GetSelected')
If $iSelect <> '' Then
$hWindow = HWnd(ControlListView($hGui, '', $hWinList, 'GetText', $iSelect, 1))
WinSetState($hWindow, '', @SW_SHOW)
$iOld = -1
EndIf
Case $hClose
$iSelect = ControlListView($hGui, '', $hWinList, 'GetSelected')
If $iSelect <> '' Then
$hWindow = HWnd(ControlListView($hGui, '', $hWinList, 'GetText', $iSelect, 1))
WinClose($hWindow, '')
$iOld = -1
EndIf
EndSwitch
_DisplayListview($hWinList)
WEnd
Func _DisplayListview(ByRef $hListview)
Local $aWinList, $hwndListview
$aWinList = WinList()
If $aWinList[0][0] = $iOld Then Return
$iOld = $aWinList[0][0]
_ArrayDelete($aWinList, 0)
_ArraySort($aWinList)
$hwndListview = GUICtrlGetHandle($hListview)
_GUICtrlListView_BeginUpdate($hwndListview)
_GUICtrlListView_DeleteAllItems($hwndListview)
For $i = 0 To UBound($aWinList) - 1
If ($aWinList[$i][0] <> '') And BitAND(WinGetState($aWinList[$i][1]), 4) Then
GUICtrlCreateListViewItem($aWinList[$i][0] & '|' & $aWinList[$i][1] & '|' & WinGetState($aWinList[$i][1]), $hListview)
EndIf
Next
_GUICtrlListView_EndUpdate($hwndListview)
EndFunc ;==>_DisplayListview
Aber vorsicht vor dem schließen von unbekannten Fenstern! Die könnten zu irgendwelchen wichtigen (Hintergrund-)Programmen gehören!