Von dir vorbestimmte Windows Prozesse werden per Doppelklick beendet (mit Info)

  • Spoiler anzeigen
    [autoit]


    #cs ----------------------------------------------------------------------------

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

    AutoIt Version: 3.3.8.1
    Author: m47
    Version: 1.0

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

    Script Function:
    Template AutoIt script.

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

    #ce ----------------------------------------------------------------------------

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

    ; Script Start - Add your code below here#

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

    Opt("MustDeclareVars", 1) ;1 = Variable muss deklariert werden

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

    #include <Misc.au3>
    Local $Script = "ProcessClose"
    If _Singleton($Script,1) = 0 Then
    Beep(200,200)
    Exit
    EndIf

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

    Global $i
    Global $x
    Global $_0_bis_19[20] = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19]
    Global $counter = 0

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

    ;Process
    Dim $Process[20] ;Der hier eingetragene Text wird mit der Prozessliste verglichen.
    $Process[0] = "Firefox" ;Ist der Text im Prozessnamen enthalten so wird dieser Prozess beendet.
    $Process[1] = "FlashPlayerPlugin"
    $Process[2] = ""
    $Process[3] = ""
    $Process[4] = ""
    $Process[5] = ""
    $Process[6] = ""
    $Process[7] = ""
    $Process[8] = ""
    $Process[9] = ""
    $Process[10] = ""
    $Process[11] = ""
    $Process[12] = ""
    $Process[13] = ""
    $Process[14] = ""
    $Process[15] = ""
    $Process[16] = ""
    $Process[17] = ""
    $Process[18] = ""
    $Process[19] = ""

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

    ;Tooltip_Text
    Dim $Tooltip_Text[4]
    $Tooltip_Text[0] = "Process closed:"
    $Tooltip_Text[1] = ""
    $Tooltip_Text[2] = "["
    $Tooltip_Text[3] = "]"
    Dim $Tooltip_Sleep_Delay = 10000 ;Millisekunden warten um die Tooltipanzeige aufrecht zu halten

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

    ;Tooltip_Text_Info
    Dim $Tooltip_Text_Info[20]
    For $i In $_0_bis_19
    $Tooltip_Text_Info[$i] = ""
    Next

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

    ;Start
    ;Prozesse durchsuchen
    Local $ProcessList = ProcessList()
    For $i = 1 To $ProcessList[0][0]
    For $x In $_0_bis_19
    StringReplace($ProcessList[$i][0],$Process[$x],$Process[$x])
    If @extended Then
    Local $PID = ProcessClose($ProcessList[$i][1])
    If $PID Then ProcessClose($PID)
    $Tooltip_Text_Info[$counter] = $Tooltip_Text[1] & $ProcessList[$i][0] & $Tooltip_Text[2] & $ProcessList[$i][1] & $Tooltip_Text[3]
    $counter +=1
    ;~ MsgBox(0,0, $Tooltip_Text_Info[$x])
    If $Tooltip_Text_Info[0] <> "" Then
    ToolTip($Tooltip_Text[0] & @CRLF & _
    $Tooltip_Text_Info[0] & @CRLF & _
    $Tooltip_Text_Info[1] & @CRLF & _
    $Tooltip_Text_Info[2] & @CRLF & _
    $Tooltip_Text_Info[3] & @CRLF & _
    $Tooltip_Text_Info[4] & @CRLF & _
    $Tooltip_Text_Info[5] & @CRLF & _
    $Tooltip_Text_Info[6] & @CRLF & _
    $Tooltip_Text_Info[7] & @CRLF & _
    $Tooltip_Text_Info[8] & @CRLF & _
    $Tooltip_Text_Info[9] & @CRLF & _
    $Tooltip_Text_Info[10] & @CRLF & _
    $Tooltip_Text_Info[11] & @CRLF & _
    $Tooltip_Text_Info[12] & @CRLF & _
    $Tooltip_Text_Info[13] & @CRLF & _
    $Tooltip_Text_Info[14] & @CRLF & _
    $Tooltip_Text_Info[15] & @CRLF & _
    $Tooltip_Text_Info[16] & @CRLF & _
    $Tooltip_Text_Info[17] & @CRLF & _
    $Tooltip_Text_Info[18] & @CRLF & _
    $Tooltip_Text_Info[19] & @CRLF _
    , @DesktopWidth/2, @DesktopHeight/2)
    EndIf
    EndIf
    Next
    Next

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

    For $i In $_0_bis_19
    Consolewrite($i & " " & $Tooltip_Text_Info[$i]&@LF)
    Next

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

    Sleep($Tooltip_Sleep_Delay)

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

    Exit
    ;Ende

    [/autoit]

    5 Mal editiert, zuletzt von m47 (17. Oktober 2015 um 03:50)

  • Spoiler anzeigen
    [autoit]


    #cs ----------------------------------------------------------------------------

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

    AutoIt Version: 3.3.12.0
    Author: m47
    Version: 1.3

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

    Script Function:
    Template AutoIt script.

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

    #ce ----------------------------------------------------------------------------

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

    ; Script Start - Add your code below here

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

    #include <Misc.au3>

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

    Opt("MustDeclareVars", 1) ;1 = Variable muss deklariert werden

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

    Global $Script_Name = "ProcessClose"
    Global $i
    Global $Amount_Registered_Process
    Global $Counter_StringReplace = 0

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

    If _Singleton($Script_Name,1) = 0 Then
    Sound() ;
    Exit
    EndIf

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

    ;Schalter_MsgBox_Consolewrite
    Dim $Switch_MsgBox_Tooltip_Consolewrite = 5
    #cs
    0 = AUS
    1 = MsgBox + Consolewrite
    2 = MsgBox
    3 = MsgBox + Tooltip
    4 = Tooltip
    5 = Tooltip + Consolewrite
    6 = Consolewrite
    7 = ALLES EIN
    #ce

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

    ;Registered_Process
    Dim $Registered_Process = "Firefox|FlashPlayerPlugin" ;Der mit "|" getrennte Text wird mit der Prozessliste verglichen und falls enthalten beendet.
    ;|Firefox
    ;|FlashPlayerPlugin
    ;|Notepad
    Dim $StringSplit_Process_Registered_Process = StringSplit($Registered_Process, "|")

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

    ;Tooltip_Text
    Dim $Tooltip_Text[4]
    $Tooltip_Text[0] = "Process closed:"
    $Tooltip_Text[1] = ""
    $Tooltip_Text[2] = "["
    $Tooltip_Text[3] = "]"
    Dim $Tooltip_Sleep_Delay = 5000 ;Millisekunden warten um die Tooltipanzeige aufrecht zu halten

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

    ;ProcessList
    Dim $ProcessList = ProcessList()
    Dim $ProcessList_Amount = $ProcessList[0][0] ;Anzahl der Prozesse

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

    ;Tooltip_Text_Info
    Dim $Tooltip_Text_Info[$ProcessList_Amount+1]
    For $i = 1 To $ProcessList_Amount
    $Tooltip_Text_Info[$i] = ""
    Next
    Dim $Tooltip_Text_Info_String

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

    ;Start
    For $i = 1 To $ProcessList_Amount
    For $Amount_Registered_Process = 1 To $StringSplit_Process_Registered_Process[0] ;Anzahl der $Process eingetragenen Prozesse
    StringReplace($ProcessList[$i][0],$StringSplit_Process_Registered_Process[$Amount_Registered_Process],$StringSplit_Process_Registered_Process[$Amount_Registered_Process])
    If @extended Then
    Local $PID = ProcessClose($ProcessList[$i][1])
    If $PID Then ProcessClose($PID)
    $Tooltip_Text_Info[$Counter_StringReplace] = $Tooltip_Text[1] & $ProcessList[$i][0] & $Tooltip_Text[2] & $ProcessList[$i][1] & $Tooltip_Text[3]
    $Counter_StringReplace +=1
    Switch $Switch_MsgBox_Tooltip_Consolewrite
    Case 1,2,3,7
    _MsgBox() ;MsgBox
    EndSwitch
    EndIf
    Next
    Next

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

    Switch $Switch_MsgBox_Tooltip_Consolewrite
    Case 3,4
    _Tooltip() ;Tooltip
    Case 1,6
    _Consolewrite() ;Consolewrite
    Case 5,7
    _Tooltip() ;Tooltip
    _Consolewrite() ;Consolewrite
    EndSwitch

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

    Sleep($Tooltip_Sleep_Delay)

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

    Sound() ;
    Exit
    ;Ende

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

    ;Funktionen
    Func Sound()
    Beep(200,200)
    EndFunc

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

    Func _MsgBox()
    MsgBox("",$Counter_StringReplace, $Tooltip_Text_Info[$Counter_StringReplace-1])
    EndFunc

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

    Func _Tooltip()
    If $Counter_StringReplace > 0 Then
    For $i = 1 To $Counter_StringReplace
    $Tooltip_Text_Info_String &= $i & ".) " & $Tooltip_Text_Info[$i-1] & @CRLF
    Next
    ToolTip($Tooltip_Text[0] & @CRLF & $Tooltip_Text_Info_String, @DesktopWidth/2, @DesktopHeight/2)
    EndIf
    EndFunc

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

    Func _Consolewrite()
    For $i = 1 To $Counter_StringReplace
    Consolewrite($i & ".) " & $Tooltip_Text_Info[$i-1]&@LF)
    Next
    EndFunc

    [/autoit]
  • Wenn ich deinen Titel lese, dann sollten doch nur Prozesse geschlossen werden, die hängen.
    Bei mir wird Firefox immer geschlossen. Auch wenn er nicht hängt.

    Gruss Roger

    Ich weiss jetzt mit "Bestimmte Windows Prozesse die hängen(" ist es etwas unglücklich beschrieben worden.
    Wollte damit den Anwendungsfall beschreiben.
    "werden per Doppelklick beendet"
    zbs. Firefox stürzt ab und alles drum herum(Flashplugins) läuft noch weiter, machste Doppelklick und alles weg

    Ich hab aber auch eine selbst geschriebenes Script welches hängende Win7 Anwendungen erkennt und selbstständig schliesst.
    Ist aber in einem grösseren Programm integriert. Müsste das noch extrahieren.
    Sieht so aus:

    Spoiler anzeigen
    [autoit]


    If GUICtrlRead($Checkbox_Taskkiller) = 1 Then ;beim Button meiner GUI kann ich den Taskkiller Ein- und Ausschalten, 1=Ein
    Switch $Sec_imSpielzeit
    Case "10" ;bei Sekunde 10 wird jede Minute geprüft
    $Winlist = WinList() ;
    For $w = 1 to $Winlist[0][0]
    $title = $Winlist[$w][0]
    If $title = "[#] [" Or $title = "[#] Spielname [#]" Then
    $hWnd = $Winlist[$w][1]
    $IsHungAppWindow = DllCall("user32.dll", "int", "IsHungAppWindow", "hwnd", $hWnd) ;Prüfen ob was hängt
    If @error == 0 Then
    If $IsHungAppWindow[0] == 1 Then
    Sleep(10000) ;10 Sekunde Pause
    $IsHungAppWindow = DllCall("user32.dll", "int", "IsHungAppWindow", "hwnd", $hWnd) ;nach 10 Sekunden wird der Fund nochmal geprüft ob es wirklich hängt
    If @error == 0 Then
    If $IsHungAppWindow[0] == 1 Then
    ProcessClose(WinGetProcess($hWnd))
    IniWrite("Taskkill.ini", "Counter", "Wert", IniRead("Taskkill.ini", "Counter", "Wert", "")+1)
    IniWrite("Taskkill.ini", "ProcessClose", "Wert_"&IniRead("Taskkill.ini", "Counter", "Wert", ""), " " & @MDAY & "/" & @MON & "/" & @YEAR & " " & @HOUR & ":" & @MIN & ":" & @SEC & " " & $hWnd & " " & $title)
    EndIf
    EndIf
    EndIf
    EndIf
    EndIf
    Next
    Endswitch
    EndIf

    [/autoit]

    6 Mal editiert, zuletzt von m47 (26. September 2014 um 01:06)