atg 10 Geschrieben 11. Juni 2007 Melden Teilen Geschrieben 11. Juni 2007 Hallo Zusammen Ich habe ein kleines Problem. In einem .vbs Script kreiere ich eine Application mit CreateObject( "EXCEL.Application" ). Nun möchte ich zu diesem Object die Windows-PID erhalten. Kann mir da jemand auf die Sprünge helfen wie ich das machen kann? In Excel habe ich keine Property gefunden im Application Object für den PID. Schon mal vielen Dank im Voraus für jeden Hinweis atg Zitieren Link zu diesem Kommentar
blub 115 Geschrieben 11. Juni 2007 Melden Teilen Geschrieben 11. Juni 2007 mit wmi und win32_process geht das recht easy, z.B. wmic path win32_process where "caption like '%excel%'" get caption,processid /value cu blub Zitieren Link zu diesem Kommentar
atg 10 Geschrieben 11. Juni 2007 Autor Melden Teilen Geschrieben 11. Juni 2007 Ja, diesen Weg habe ich mir auch schon überlegt, ist aber meines errachtens 'EDV zu Fuss'. Einerseits können ja noch weitere Excel Applikationen aktiv sein und somit weiss ich immer noch nicht welches meine Instanz ist. Sicher, ich kann mir die Prozess-Liste holen bevor ich das Object kreiere und danach und der zusätzliche Prozess muss dann meine Instanz sein. Eigentlich suche ich aber einen direkten Weg von der kreierten Object-Referenz zum PID. Das müsste doch auch möglich sein. Ciao atg Zitieren Link zu diesem Kommentar
blub 115 Geschrieben 11. Juni 2007 Melden Teilen Geschrieben 11. Juni 2007 eine richtig elegante Lösung habe ich auch nicht, nur dieses demoskript aus - Aktuelle Angebote - Windows-Scripting mit WMI - Eine praxisorientierte Einführung monitorprocessevents.vbs strComputer = "." wmiNS = "\root\cimv2" objClass = "'Win32_Process'" StrMessage = "A new " & objClass & " was created at : " wmiQuery = "SELECT * FROM __InstanceCreationEvent " _ & "WITHIN 10 WHERE TargetInstance ISA " & objClass Set objWMIService = getObject("winmgmts:\\" & strComputer & wmiNS) Set colItems = objWMIService.ExecNotificationQuery(wmiQuery) Do Set objItem = colItems.NextEvent With objItem Wscript.Echo StrMessage & Now & vbcrlf & .TargetInstance.Name & vbtab & _ .TargetInstance.CommandLine & vbtab & "PID: " & .TargetInstance.ProcessId End with Loop das kannst du z.B. so anpassen, dass es dir die PID liefert, wenn ein Prozess mit der "Caption" Excel gestartet wird. Wenn nicht innerhalb sehr kurzer Zeit sehr viele Excels gestartet werden, müsste der Ansatz m.E. funktionieren cu blub Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.