Hier noch so ein Ding aus meiner Internetlosen Zeit. Ein Prozess Explorer ähnlich dem vom Windows. Er zeigt alle Prozesse an die im Moment laufen. Dazu kann man diese dann auch noch beenden. Und die besonderheit hingegen zum Windows Tastmanager - man kann Prozesse auch suchen. Ich persönlich hatte mich nämlich bei manchen Prozessen gefragt --> Was ist das? Und WO kommt das her.
Das ganze wäre aber zu einfach wenn es ohne probleme funtionieren würde. Da ich ja kein Internet hatte habe ich mir die Suchfunktion selbst gebastelt und als UDF gespeichert. Naja diese Suchfunktion lässt nur einige Verzeichnisse aus >_<. Und auch beim beenden von Prozessen gibts Probleme. Mein Prozess-Explorer kann nicht alle Prozesse beenden die der Windows Taskmanager beenden kann...
hier erstmal die Scripte:
Der Explorer:
Spoiler anzeigen
#cs ----------------------------------------------------------------------------
AutoIt Version: 3.2.2.0
Author: akira2012
Script Function:
Template AutoIt script.
#ce ----------------------------------------------------------------------------
[/autoit] [autoit][/autoit] [autoit]; Script Start - Add your code below here
[/autoit] [autoit][/autoit] [autoit]#include <array.au3>
#include <file.au3>
#include <GUIConstants.au3>
#include <GuiList.au3>
#include <Process.au3>
#include <guicombo.au3>
#include <search.au3>
dim $test[10]
[/autoit] [autoit][/autoit] [autoit];$Festplatten=DriveGetDrive("FIXED")
;_ArrayDisplay($Festplatten, "")
$PEX=GUICreate("Prozess Explorer", 330, 400)
$beenden=GUICtrlCreateButton("Beenden", 10, 300, 90)
$killprocess=GUICtrlCreateButton("Kill Process", 120, 300, 90)
$Anzeige=GUICtrlCreateProgress(10, 350, 200)
$prioritaet=GUICtrlCreateButton("Priorität auslesen", 230, 300, 90)
$test=ProcessList()
if $test[0][0] > 20 then
$hoch = 240
Else
$hoch = $test[0][0] * 10
EndIf
$Auflistung=GUICtrlCreateList("", 10, 10, 150, $hoch)
_GUICtrlListClear($Auflistung)
for $i = 1 to $test[0][0]
IF $test[$i][0] = "[System Process]" Then
Else
_GUICtrlListAddItem($Auflistung, $test[$i][0])
EndIf
Next
$priochange=GUICtrlCreatebutton("Priorität ändern", 230, 350, 90)
[/autoit] [autoit][/autoit] [autoit]$priochange2=GUICtrlCreateCombo("", 230, 10)
_GUICtrlComboAddString( $priochange2, "Gering")
_GUICtrlComboAddString( $priochange2, "Unter Normal")
_GUICtrlComboAddString( $priochange2, "Normal")
_GUICtrlComboAddString( $priochange2, "Über Normal")
_GUICtrlComboAddString( $priochange2, "Hoch")
_GUICtrlComboAddString( $priochange2, "Echtzeit")
$aendern=GUICtrlCreateButton("Ändern", 230, 50, 90)
GUICtrlSetState($priochange2, $gui_hide)
GUICtrlSetState($aendern, $gui_hide)
$suchen=GUICtrlCreateButton("Prozess Suchen", 230, 250, 90)
[/autoit] [autoit][/autoit] [autoit]GUISetState(@sw_show)
[/autoit] [autoit][/autoit] [autoit]While 1
$msg = GUIGetMsg()
Select
case $msg = $beenden
Exit
case $msg = $suchen
$suche=GUICtrlRead($Auflistung)
_search($suche, "C:\")
case $msg = $Prioritaet
$Failure=-1
$Idle=0
$BelowNormal=1
$Normal=2
$AboveNormal=3
$High=4
$Realtime=5
$prozess=GUICtrlRead($Auflistung)
for $i = 1 to $test[0][0]
$prio=_ProcessGetPriority($test[$i][1])
IniWrite("prio.ini", "Prozess", $test[$i][0], $prio)
Next
$ausgabe=IniRead("prio.ini", "Prozess", $prozess, "")
If $ausgabe=$Failure Then
beep (500, 100)
MsgBox(0, "", "Die Priorität des Prozesses """&$prozess&""" ist nicht bekannt")
ElseIf $ausgabe=$Idle Then
beep (500, 100)
MsgBox(0, "", "Die Priorität des Prozesses """&$prozess&""" ist ""niedrig"".")
ElseIf $ausgabe=$BelowNormal Then
beep (500, 100)
MsgBox(0, "", "Die Priorität des Prozesses """&$prozess&""" ist ""unter Normal"".")
ElseIf $ausgabe=$Normal Then
beep (500, 100)
MsgBox(0, "", "Die Priorität des Prozesses """&$prozess&""" ist ""Normal"".")
ElseIf $ausgabe=$AboveNormal Then
beep (500, 100)
MsgBox(0, "", "Die Priorität des Prozesses """&$prozess&""" ist ""Über Normal"".")
ElseIf $ausgabe=$High Then
beep (500, 100)
MsgBox(0, "", "Die Priorität des Prozesses """&$prozess&""" ist ""Hoch"".")
ElseIf $ausgabe=$Realtime Then
beep (500, 100)
MsgBox(0, "", "Die Priorität des Prozesses """&$prozess&""" ""Echtzeit"".")
EndIf
IniDelete("prio.ini", "Prozess")
case $msg = $priochange
GUICtrlSetState($priochange2, $gui_show)
GUICtrlSetState($aendern, $gui_show)
case $msg=$aendern
$prozess=GUICtrlRead($Auflistung)
$ergebnis=GUICtrlRead($priochange2)
if $ergebnis="Gering" Then
ProcessSetPriority($prozess, $idle)
IF _ProcessGetPriority($prozess) = 0 Then
beep (500, 100)
MsgBox(0, "Info", "Der Prozess hat jetzt die Priorität ""Gering""")
Else
beep (500, 100)
MsgBox(0, "Fehler", "Die Priorität des Prozesses kann nicht geändert werden!")
EndIf
ElseIf $ergebnis="Unter normal" Then
ProcessSetPriority($prozess, $BelowNormal)
IF _ProcessGetPriority($prozess) = 1 Then
beep (500, 100)
MsgBox(0, "Info", "Der Prozess hat jetzt die Priorität ""Unter Normal""")
Else
beep (500, 100)
MsgBox(0, "Fehler", "Die Priorität des Prozesses kann nicht geändert werden!")
EndIf
ElseIf $ergebnis="Normal" Then
ProcessSetPriority($prozess, $Normal)
IF _ProcessGetPriority($prozess) = 2 Then
beep (500, 100)
MsgBox(0, "Info", "Der Prozess hat jetzt die Priorität ""Normal""")
Else
beep (500, 100)
MsgBox(0, "Fehler", "Die Priorität des Prozesses kann nicht geändert werden!")
EndIf
ElseIf $ergebnis="Über normal" Then
ProcessSetPriority($prozess, $AboveNormal)
IF _ProcessGetPriority($prozess) = 3 Then
beep (500, 100)
MsgBox(0, "Info", "Der Prozess hat jetzt die Priorität ""Über Normal""")
Else
beep (500, 100)
MsgBox(0, "Fehler", "Die Priorität des Prozesses kann nicht geändert werden!")
EndIf
ElseIf $ergebnis="Hoch" Then
ProcessSetPriority($prozess, $High)
IF _ProcessGetPriority($prozess) = 4 Then
beep (500, 100)
MsgBox(0, "Info", "Der Prozess hat jetzt die Priorität ""Hoch""")
Else
beep (500, 100)
MsgBox(0, "Fehler", "Die Priorität des Prozesses kann nicht geändert werden!")
EndIf
ElseIf $ergebnis="Echtzeit" Then
ProcessSetPriority($prozess, $Realtime)
IF _ProcessGetPriority($prozess) = 5 Then
beep (500, 100)
MsgBox(0, "Info", "Der Prozess hat jetzt die Priorität ""Echtzeit""")
Else
beep (500, 100)
MsgBox(0, "Fehler", "Die Priorität des Prozesses kann nicht geändert werden!")
EndIf
EndIf
case $msg = $killprocess
$prozess=GUICtrlRead($Auflistung)
ProcessClose($prozess)
$i=0
$label=GUICtrlCreateLabel("Prozess wird beended...", 10, 330)
Do
$i=$i+1
GUICtrlSetData($anzeige, $i)
sleep(100)
until not ProcessExists($prozess) OR $i = 100
IF Not ProcessExists($prozess) THEN
$i=100
GUICtrlSetData($anzeige, $i)
GUICtrlDelete($label)
$label=GUICtrlCreateLabel("Prozess beended!", 10, 330)
beep (500, 100)
MsgBox(0, "Beenden erfolgreich", "Der Prozess wurde erfolgreich beended")
Else
GUICtrlDelete($label)
$label=GUICtrlCreateLabel("Prozess beenden fehlgeschlagen!", 10, 330)
beep (500, 100)
MsgBox(0, "Beenden fehlgeschlagen", "Beenden fehlgeschlagen! Der Prozess lässt sich nicht beenden.")
EndIf
$i = 0
GUICtrlSetData($anzeige, $i)
_GUICtrlListClear($Auflistung)
for $i = 1 to $test[0][0]
IF $test[$i][0] = "[System Process]" Then
Else
_GUICtrlListAddItem($Auflistung, $test[$i][0])
EndIf
Next
Case $msg = $GUI_EVENT_CLOSE
ExitLoop
EndSelect
WEnd
#cs
[/autoit] [autoit][/autoit] [autoit]#ce
[/autoit]Und hier die Suchfunktion -_-*
Spoiler anzeigen
#include <array.au3>
#include <file.au3>
func _search($Eingabe, $Laufwerk)
;$Eingabe = "*.au3"
;$Laufwerk = "C:\"
;Suche im Rootverzeichniss
$Verzeichnisse=_FileListToArray($Laufwerk, "*", 2)
FOR $i = 1 to $Verzeichnisse[0]
FileChangeDir($Laufwerk & $Verzeichnisse[$i])
$Suche = FileFindFirstFile($Eingabe)
While 1
$file = FileFindNextFile($Suche)
If @error Then ExitLoop
MsgBox(4096, "File:", @workingdir &"\"& $file)
WEnd
FileClose($Suche)
Next
;Suche im 2. Verzeichniss
$Verzeichnisse=_FileListToArray($Laufwerk, "*", 2)
FOR $i = 1 to $Verzeichnisse[0]
FileChangeDir($Laufwerk & $Verzeichnisse[$i])
$Aktuell = @WorkingDir
;MsgBox(0, "", @Workingdir)
$Verzeichnisse2=_FileListToArray($Aktuell, "*", 2)
IF @Error = 4 then
;MsgBox(0, "", "Der Ordner "&$Aktuell&" hat keine Unterordner")
Else
FOR $o = 1 to $Verzeichnisse2[0]
FileChangeDir($Aktuell&"\"&$Verzeichnisse2[$o])
;MsgBox(0, "", $Aktuell&"\"&$Verzeichnisse2[$o])
$Suche = FileFindFirstFile($Eingabe)
While 1
$file = FileFindNextFile($Suche)
If @error Then ExitLoop
MsgBox(4096, "File:", @workingdir &"\"& $file)
WEnd
Next
EndIf
FileClose($Suche)
Next
;Suche im 3.Verzeichniss
$Verzeichnisse=_FileListToArray($Laufwerk, "*", 2)
FOR $i = 1 to $Verzeichnisse[0]
FileChangeDir($Laufwerk & $Verzeichnisse[$i])
$Aktuell = @WorkingDir
$Verzeichnisse2=_FileListToArray($Aktuell, "*", 2)
IF @Error = 4 OR @ERROR = 1 then
;MsgBox(0, "", "Der Ordner "&$Aktuell&" hat keine Unterordner")
Else
FOR $o = 1 to $Verzeichnisse2[0]
FileChangeDir($Aktuell&"\"&$Verzeichnisse2[$o])
$Aktuell = @Workingdir
;_ArrayDisplay($Verzeichnisse2, $Aktuell)
$Verzeichnisse3=_FileListToArray($Aktuell, "*", 2)
IF @Error = 4 OR @ERROR = 1 then
;MsgBox(0, "", "Der Ordner "&$Aktuell&" hat keine Unterordner")
Else
FOR $p = 1 to $Verzeichnisse3[0]
FileChangeDir($Aktuell &"\"& $Verzeichnisse3[$p])
$Suche = FileFindFirstFile($Eingabe)
While 1
$file = FileFindNextFile($Suche)
If @error Then ExitLoop
MsgBox(4096, "File:", @workingdir &"\"& $file)
WEnd
Next
EndIf
Next
EndIf
FileClose($Suche)
Next
;Suche im 4. Verzeichniss
$Verzeichnisse=_FileListToArray($Laufwerk, "*", 2)
FOR $i = 1 to $Verzeichnisse[0]
FileChangeDir($Laufwerk & $Verzeichnisse[$i])
$Aktuell = @WorkingDir
;MsgBox(0, "", @Workingdir)
$Verzeichnisse2=_FileListToArray($Aktuell, "*", 2)
IF @Error = 4 then
;MsgBox(0, "", "Der Ordner "&$Aktuell&" hat keine Unterordner")
Else
FOR $o = 1 to $Verzeichnisse2[0]
FileChangeDir($Aktuell&"\"&$Verzeichnisse2[$o])
$Aktuell = @Workingdir
$Verzeichnisse3=_FileListToArray($Aktuell, "*", 2)
IF @Error = 4 then
;MsgBox(0, "", "Der Ordner "&$Aktuell&" hat keine Unterordner")
Else
FOR $p = 1 to $Verzeichnisse3[0]
FileChangeDir($Aktuell &"\"& $Verzeichnisse3[$p])
$Aktuell = @Workingdir
$Verzeichnisse4=_FileListToArray($Aktuell, "*", 2)
IF @Error = 4 then
;MsgBox(0, "", "Der Ordner "&$Aktuell&" hat keine Unterordner")
Else
FOR $u = 1 to $Verzeichnisse4[0]
FileChangeDir($Aktuell &"\"& $Verzeichnisse4[$u])
$Suche = FileFindFirstFile($Eingabe)
While 1
$file = FileFindNextFile($Suche)
If @error Then ExitLoop
MsgBox(4096, "File:", @workingdir &"\"& $file)
WEnd
Next
EndIf
Next
EndIf
Next
EndIf
FileClose($Suche)
Next
;Suche im 5. Verzeichniss
$Verzeichnisse=_FileListToArray($Laufwerk, "*", 2)
FOR $i = 1 to $Verzeichnisse[0]
FileChangeDir($Laufwerk & $Verzeichnisse[$i])
$Aktuell = @WorkingDir
;MsgBox(0, "", @Workingdir)
$Verzeichnisse2=_FileListToArray($Aktuell, "*", 2)
IF @Error = 4 then
;MsgBox(0, "", "Der Ordner "&$Aktuell&" hat keine Unterordner")
Else
FOR $o = 1 to $Verzeichnisse2[0]
FileChangeDir($Aktuell&"\"&$Verzeichnisse2[$o])
$Aktuell = @Workingdir
$Verzeichnisse3=_FileListToArray($Aktuell, "*", 2)
IF @Error = 4 then
;MsgBox(0, "", "Der Ordner "&$Aktuell&" hat keine Unterordner")
Else
FOR $p = 1 to $Verzeichnisse3[0]
FileChangeDir($Aktuell &"\"& $Verzeichnisse3[$p])
$Aktuell = @Workingdir
$Verzeichnisse4=_FileListToArray($Aktuell, "*", 2)
IF @Error = 4 then
;MsgBox(0, "", "Der Ordner "&$Aktuell&" hat keine Unterordner")
Else
FOR $u = 1 to $Verzeichnisse4[0]
FileChangeDir($Aktuell &"\"& $Verzeichnisse4[$u])
$Aktuell = @Workingdir
$Verzeichnisse5=_FileListToArray($Aktuell, "*", 2)
IF @Error = 4 then
;MsgBox(0, "", "Der Ordner "&$Aktuell&" hat keine Unterordner")
Else
For $t = 1 to $Verzeichnisse5[0]
FileChangeDir($Aktuell &"\"& $Verzeichnisse5[$t])
$Suche = FileFindFirstFile($Eingabe)
While 1
$file = FileFindNextFile($Suche)
If @error Then ExitLoop
MsgBox(4096, "File:", @workingdir &"\"& $file)
WEnd
Next
EndIf
Next
EndIf
Next
EndIf
Next
EndIf
FileClose($Suche)
Next
;Suche im 6. Verzeichniss
$Verzeichnisse=_FileListToArray($Laufwerk, "*", 2)
FOR $i = 1 to $Verzeichnisse[0]
FileChangeDir($Laufwerk & $Verzeichnisse[$i])
$Aktuell = @WorkingDir
;MsgBox(0, "", @Workingdir)
$Verzeichnisse2=_FileListToArray($Aktuell, "*", 2)
IF @Error = 4 then
;MsgBox(0, "", "Der Ordner "&$Aktuell&" hat keine Unterordner")
Else
FOR $o = 1 to $Verzeichnisse2[0]
FileChangeDir($Aktuell&"\"&$Verzeichnisse2[$o])
$Aktuell = @Workingdir
$Verzeichnisse3=_FileListToArray($Aktuell, "*", 2)
IF @Error = 4 then
;MsgBox(0, "", "Der Ordner "&$Aktuell&" hat keine Unterordner")
Else
FOR $p = 1 to $Verzeichnisse3[0]
FileChangeDir($Aktuell &"\"& $Verzeichnisse3[$p])
$Aktuell = @Workingdir
$Verzeichnisse4=_FileListToArray($Aktuell, "*", 2)
IF @Error = 4 then
;MsgBox(0, "", "Der Ordner "&$Aktuell&" hat keine Unterordner")
Else
FOR $c = 1 to $Verzeichnisse4[0]
FileChangeDir($Aktuell &"\"& $Verzeichnisse4[$c])
$Aktuell = @Workingdir
$Verzeichnisse5=_FileListToArray($Aktuell, "*", 2)
IF @Error = 4 then
;MsgBox(0, "", "Der Ordner "&$Aktuell&" hat keine Unterordner")
Else
For $r = 1 to $Verzeichnisse5[0]
FileChangeDir($Aktuell &"\"& $Verzeichnisse5[$r])
$Aktuell = @Workingdir
$Verzeichnisse6=_FileListToArray($Aktuell, "*", 2)
IF @Error = 4 then
;MsgBox(0, "", "Der Ordner "&$Aktuell&" hat keine Unterordner")
Else
For $g = 1 to $Verzeichnisse6[0]
FileChangeDir($Aktuell &"\"& $Verzeichnisse6[$g])
$Suche = FileFindFirstFile($Eingabe)
While 1
$file = FileFindNextFile($Suche)
If @error Then ExitLoop
MsgBox(4096, "File:", @workingdir &"\"& $file)
WEnd
Next
EndIf
Next
EndIf
Next
EndIf
Next
EndIf
Next
EndIf
FileClose($Suche)
Next
EndFunc
Ich werde das ganze sicher mal überarbeiten und die eigene Suchfunktion vielleicht ersetzen aber wollte erstmal hören was ihr dazu denkt ![]()