Überprüfen ob eine Exe ausgeführt wurde.

  • Hallo,

    wie kann man mit AutoIt überprüfen, ob eine Exe-Datei ausgeführt wurde?
    Also sagen wir mal ich habe eine Datei ----> C:\Test.exe und möchte wissen ob gerade diese Datei noch läuft. Mit Processexist geht das ja nicht, weil die Datei "Test.exe" auch unter Eigene Dateien laufen könnte. Kennt jemand eine Funkion, mit dem man sowas auslesen kann?

  • Startest du die Exe aus einem Script ?
    Dann kannst du dir ja die PID ausgeben und
    auf eben die mit ProcessExists prüfen lassen.

    Und wenn dem nicht der Fall ist suchst du also nach einer Möglichkeit, von einem Prozess den
    Pfad zu ermitteln, oder wie muss ich das verstehen ? ^^

    Edit: [ gelöst ] Prozess zu Pfad

    There are only 10 types of people in the world:
    Those who understand binary - and those who don't.

  • Du kannst mit ProcessList die Test.exe auslesen und mit der PID die UDF _PIDGetPath verwenden, die erst kürzlich wieder im Forum gepostet wurde.

    Edit: Hier mal nen Beispiel für Paint:

    Spoiler anzeigen
    [autoit]

    $ProcList = ProcessList("mspaint.exe")
    $FilePaths = ""
    For $i = 1 To UBound($ProcList) - 1
    $FilePaths &= _PidGetPath($ProcList[$i][1]) & @CRLF
    Next
    MsgBox(0, "", $FilePaths)

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

    Func _PidGetPath($pid = "", $strComputer = 'localhost')
    If $pid = "" Then $pid = WinGetProcess(WinGetTitle(""))
    $wbemFlagReturnImmediately = 0x10
    $wbemFlagForwardOnly = 0x20
    $colItems = ""
    $objWMIService = ObjGet("winmgmts:\\" & $strComputer & "\root\CIMV2")
    $colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_Process WHERE ProcessId = " & $pid, "WQL", $wbemFlagReturnImmediately + $wbemFlagForwardOnly)
    If IsObj($colItems) Then
    For $objItem In $colItems
    If $objItem.ExecutablePath Then Return $objItem.ExecutablePath
    Next
    EndIf
    EndFunc ;==>_PidGetPath

    [/autoit]
  • Das ganze kannst Du über

    Spoiler anzeigen
    [autoit][/autoit] [autoit][/autoit] [autoit]

    If Not ProcessExists("Test.exe") Then
    MsgBox(0, "Processmeldung", "Process inaktiv.")
    EndIf
    If ProcessExists("Test.exe") Then
    MsgBox(0, "Processmeldung", "Process aktiv.")
    EndIf

    [/autoit]


    prüfen.
    Oben wenn Process nicht aktiv ist (Datei nicht gestartet) und unten wenn Process aktiv ist (Datei ist gestartet).

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

  • Alina:
    Lesen ?
    Er sagte doch extra, dass ProcessExists nicht seinen Anforderungen entspricht,
    da so allein nicht sicher ist, von wo die Exe ausgeführt wurde.... ;)

    There are only 10 types of people in the world:
    Those who understand binary - and those who don't.