hi @ all
habe wieder ne frage:
Ich habe von Greenhorn meinen Code angepasst bekommen das er alle Prozesse die
aktiv sind in einer ListView angezeigt werden.
Jetzt versuche ich wen mann auf den Button "Prozess Schließen" klickt
das der ausgewählte Prozess in der ListView sich schließt.
und wäre es möglich eine MSGBox zu öffnen die nachfrägt ob man den Prozess wirklich
schließen will vorher anzeigt?
MfG Roggazzz
P.S: Hier der Code:
[autoit]#include <WindowsConstants.au3>
#include <GUIConstantsEx.au3>
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <StaticConstants.au3>
#include <ListViewConstants.au3>
Global $aProcessList
; $aidLVItems enthält die IDs der Elemente des Listenansicht-Steuerelements.
Global $aidLVItems [1] = [0] ; erstem Element Null zuweisen
Global $drive,$dir,$fname,$ext, $lID
$hWnd = GUICreate ("RogProgs TaskManager", _
350, 460, -1, -1, _
$WS_OVERLAPPEDWINDOW, _
$WS_EX_CLIENTEDGE)
$idButton1 = GUICtrlCreateButton ("Prozess &Starten", 168, 0, 121, 25, 0)
$idButton2 = GUICtrlCreateButton ("Prozess Be&enden", 16, 416, 113, 25, 0)
$idInput1 = GUICtrlCreateInput ("Prozess Name", 24, 8, 121, 21)
$idLabel1 = GUICtrlCreateLabel ("Offene Prozesse:", 32, 32, 85, 17)
$idUhrzeit = GUICtrlCreateLabel ("Uhrzeit", 240, 424, 37, 17)
$ID_LISTVIEW = GUICtrlCreateListView ("Prozessname|PID", 0, 50, 350, 350)
[/autoit][autoit][/autoit][autoit]If (Not UpdateProcessList ($aProcessList, $ID_LISTVIEW, $aidLVItems)) Then
MsgBox (266256, "Fehler", "Es konnten keine Prozesse aufgelistet werden!")
EndIf
GUISetState (@SW_SHOW, $hWnd)
[/autoit][autoit][/autoit][autoit]While True
Switch GUIGetMsg ( )
Case $GUI_EVENT_CLOSE
Exit
Case $idButton1
ShellExecute(GuiCtrlread($idInput1))
EndSwitch
WEnd
; UpdateProcessList (ByRef $aProcesses, $idListView, $aidLVItems)
; Diese Funktion aktualisiert die Listenansicht.
; Rückgabe: True bei Erfolg, sonst False.
; [in/out]$aProcesses - Arrayvariable in der die Prozessliste gespeichert werden soll
; [in] $idListView - Identifizierer des Listenansicht-Steuerelements
; [in] $aidLVItems - Arrayvariable, welche die Elemente der Listenansicht enthält
Func UpdateProcessList (ByRef $aProcesses, $idListView, ByRef $aidLVItems)
$aProcesses = ProcessList ( )
If (Not IsArray ($aProcesses)) Then _
Return False ; Fehler
;-- Wenn weniger Elemente in der Listenansicht, als Prozesse ...
If ($aidLVItems[0] < $aProcesses[0][0]) Then
; Array vergrößern.
ReDim $aidLVItems [$aProcesses[0][0] + 1]
;- Wenn aidLVItems[0] ungleich Null ...
If ($aidLVItems[0]) Then
; Existierende Elemente in der Listenansicht aktualisieren
For $i = 1 To $aidLVItems[0]
GUICtrlSetData ($aidLVItems[$i], $aProcesses[$i][0] & "|" & $aProcesses[$i][1])
Next
; Neue Elemente in der Listenansicht erzeugen
For $i = $aidLVItems[0] + 1 To $aProcesses[0][0]
$aidLVItems[$i] = GUICtrlCreateListViewItem ($aProcesses[$i][0] & _ ; Prozessname
"|" & _
$aProcesses[$i][1], _ ; PID
$idListView)
Next
;- aidLVItems[0] gleich Null ...
Else
; Ein Element/Prozess in der Listenansicht erzeugen.
For $i = 1 To $aProcesses[0][0]
$aidLVItems[$i] = GUICtrlCreateListViewItem ($aProcesses[$i][0] & _ ; Prozessname
"|" & _
$aProcesses[$i][1], _ ; PID
$idListView)
Next
EndIf
$aidLVItems[0] = $aProcesses[0][0]
;-- Wenn mehr Elemente in der Listenansicht, als Prozesse ...
ElseIf ($aidLVItems[0] > $aProcesses[0][0]) Then
; Existierende Elemente in der Listenansicht aktualisieren
For $i = 1 To $aidLVItems[0]
If ($i <= $aProcesses[0][0]) Then
GUICtrlSetData ($aidLVItems[$i], $aProcesses[$i][0] & "|" & $aProcesses[$i][1])
Else
GUICtrlDelete ($aidLVItems[$i])
EndIf
Next
; Array verkleinern.
ReDim $aidLVItems [$aProcesses[0][0] + 1]
EndIf
Return True ; Erfolg
EndFunc
;