Moin,
ich hänge leider gerade an einer, wie ich dachte, einfachen Abfrage.
Ich wollte einfach nur ganz normal mit ProcessWaitClose() das Skript pausieren bis mein Prozess halt beendet wird. Leider meint die Funktion das der Prozess gar nicht erst läuft und gibt sofort den Wert 1 zurück obwohl der Prozess noch existiert.
Hier das Skript:
#RequireAdmin
if ProcessWaitClose("TeamViewer_Service.exe",5) = 1 Then
MsgBox(64,"TEST","Prozess nicht aktiv!")
Else
MsgBox(64,"TEST","Run out of Time!")
EndIf
Exit
Alles anzeigen
Da es sich um einen "SYSTEM" -Prozess handelt und ich das ganze mit jedem "SYSTEM" -Prozess reproduzieren kann, denke ich liegt hier eine Art Zugriffsrechte Problem vor. Mit zB. "chrome.exe" (Benutzerprozess) gibts natürlich keine Probleme.
Habe dann weiter recherchiert und nach einer Möglichkeit gesucht die Abfrage per Dienst zu realisieren. Per WMI-Abfrage soll das laut hier möglich sein. Leider tu ich mich damit immer schwer und mein Versuch das ganze über den zum Prozess dazugehörenden Dienst "TeamViewer" abzufragen scheitert ebenfalls da nicht einmal eine Ausgabe über die MsgBox() erfolgt.
#RequireAdmin
$wbemFlagReturnImmediately=0x10
$wbemFlagForwardOnly=0x20
$Output=""
$objWMIService=ObjGet("winmgmts:\\localhost\root\CIMV2")
$colItems=$objWMIService.ExecQuery("SELECT * FROM TeamViewer", "WQL", _
$wbemFlagReturnImmediately + $wbemFlagForwardOnly)
If IsObj($colItems) then
For $objItem In $colItems
$Output&="Started: " &$objItem.Started
MsgBox(64,"TEST",$Output)
ExitLoop
Next
Else
MsgBox(64,"TEST","Keine Abfrage möglich!")
Endif
Alles anzeigen
Ich bin langsam ratlos und suche eine möglichst einfache Lösung in Form einer ProcessWaitClose() Funktion. Vielleicht habt ihr ja zufällig Teamviewer laufen und könnt das mal gegenprüfen oder sonst einen x-beliebigen anderen "SYSTEM" -Prozess eintragen.
Über Lösungsvorschläge wäre ich wie immer sehr dankbar!
MfG Chris