Prüfen welche Prozessen welchen State haben

  • Hallo Forum,
    Dieses Skript prüft alle Prozesse ob diese minimiert oder aktiviert sind.
    Oben steht eine Liste falls man unten die BitAnd ändern möchte.
    Ich hoffe das Skript gefällt euch und auf Positive rückmeldung :P


    Updaet: 20:35Uhr keine antwort ? ^^

    Spoiler anzeigen
    [autoit]

    ;~ 1 = Fenster existiert.
    ;~ 2 = Fenster ist sichtbar.
    ;~ 4 = Fenster ist freigegeben.
    ;~ 8 = Fenster ist aktiv.
    ;~ 16 = Fenster ist minimiert.
    ;~ 32 = Fenster ist maximiert.
    #include <array.au3>
    #include <Process.au3>
    Global $list = ProcessList()
    For $i = 1 To $list[0][0]
    $state = WinGetState(_WinGetByPID($list[$i][1]), "")
    $processString = "ProcessName: " & $list[$i][0] & @CRLF
    $processString &= "ProcessID: " & $list[$i][1] & @CRLF
    $processString &= "ProcessPath: " & _GetProcessPath($list[$i][1]) & @CRLF

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

    If BitAND($state, 16) Then ; Fenster Modus siehe oben (minimiert)
    MsgBox(0, $list[$i][0], "Fenster ist minimiert" & @CRLF & @CRLF & $processString)
    EndIf
    If BitAND($state, 8) Then ; Fenster Modus siehe oben (aktiviert)
    MsgBox(0, $list[$i][0], "Fenster ist Aktiviert" & @CRLF & @CRLF & $processString)
    EndIf
    If BitAND($state, 32) Then ; Fenster Modus siehe oben (maximiert)
    MsgBox(0, $list[$i][0], "Fenster ist Maximiert" & @CRLF & @CRLF & $processString)
    EndIf
    Next

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

    Func _GetProcessPath($GPPpid)
    $colItems = ""
    $strComputer = "localhost"

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

    $objWMIService = ObjGet("winmgmts:\\localhost\root\CIMV2")
    $colItems = $objWMIService.ExecQuery('SELECT * FROM Win32_Process WHERE processid = ' & $GPPpid, "WQL", 0x10 + 0x20)

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

    If IsObj($colItems) Then
    For $objItem In $colItems
    Return $objItem.ExecutablePath
    Next
    Else
    Return ""
    EndIf
    EndFunc ;==>_GetProcessPath

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

    Func _WinGetByPID($iPID, $nArray = 1)
    If IsString($iPID) Then $iPID = ProcessExists($iPID)
    Local $aWList = WinList(), $sHold
    For $iCC = 1 To $aWList[0][0]
    If WinGetProcess($aWList[$iCC][1]) = $iPID And _
    BitAND(WinGetState($aWList[$iCC][1]), 2) Then
    If $nArray Then Return $aWList[$iCC][0]
    $sHold &= $aWList[$iCC][0] & Chr(1)
    EndIf
    Next
    If $sHold Then Return StringSplit(StringTrimRight($sHold, 1), Chr(1))
    Return SetError(1, 0, 0)
    EndFunc ;==>_WinGetByPID

    [/autoit]

    Einmal editiert, zuletzt von tuttifrutti (9. Februar 2011 um 20:35)