Wie mit VBS auf laufenden Prozess prüfen

11/12/2007 - 11:26 von Janni | Report spam
Hallo,

ich würde gern folgendes Problem via VBS lösen: Wenn eine spezielle
Applikation unter Windows XP aufgerufen wird, dann dauert der Start dieser
Applikation ca. eine Minute und es wird leider keine "Eieruhr" angezeigt.
Nun kommt es öfter vor, das "ungeduldige Anwender" dann diese
Applikation nochmal und nochmal zum Start doppelklicken, was ich gern
unterbinden möchte.
Beim ersten Aufruf der Applikation, wird solange die Applikation làuft,
ein Prozess APPLIKATION.EXE im Task-Manager ausgeführt. Ich würde
nun gern beim Aufrufen der Applikation prüfen, ob der Prozess APPLIKATION.EXE
schon làuft. Wenn ja, dann sollte eine Meldung erscheinen "Applikation ist
schon
gestartet, bitte warten..." und der erneute Start sollte verhindert werden.
Ich habe es schon mit der Abprüfung via "WshShell.AppActivate("APPLIKATION")"
versucht, aber leider wird hier das Laufen der "Anwendung" und nicht das
Laufen des "Prozesses" geprüft. Unter "Anwendungen" erscheint die Applikation
leider erst dann, wenn diese komplett nach ca. einer Minute gestartet wurde,
was für mein Abprüfen zu spàt ist.

Hat jemand eine Idee, wie man via VBS (oder anders) bereits laufende
Prozesse abfragen und auswerten kann?

Danke im Voraus.

Gruß Janni
 

Lesen sie die antworten

#1 Rüdiger Rösler
12/12/2007 - 08:34 | Warnen spam
Janni typed:

ich würde gern folgendes Problem via VBS lösen: Wenn eine spezielle
Applikation unter Windows XP aufgerufen wird, dann dauert der Start
dieser Applikation ca. eine Minute und es wird leider keine "Eieruhr"
angezeigt. Nun kommt es öfter vor, das "ungeduldige Anwender" dann
diese
Applikation nochmal und nochmal zum Start doppelklicken, was ich gern
unterbinden möchte.



Dieses Skript sollte in etwa Deine Erwartungen erfüllen:

'##########################Terminator.vbs#############################
' Dieses Skript überwacht die Ausführung des angegebenen Prozesses und
' làsst nur die Ausführung einer einzigen Instanz zu.
' Das Skript erwartet beim Aufruf die Angabe des zu überwachenden
' Prozesses, Beispiel:
' Terminator Notepad.exe

Const CREA_EVT = "__InstanceCreationEvent"

Dim i, wbmSink, wmi, blnLaeuft, str

Sub ProcEvt_OnObjectReady(wmiEvt, wmiAsyCont)
i = i + 1
If i > 1 Then
wmiEvt.TargetInstance.Terminate
blnLaeuft = True
i = i - 1
End If
End Sub

Set wmi = GetObject("winmgmts:")
Set wbmSink = WScript.CreateObject("WbemScripting.SWbemSink", _
"ProcEvt_")
Set wshShell = CreateObject("WScript.Shell")

wmi.ExecNotificationQueryAsync wbmSink, "select * from " & CREA_EVT & _
" within 1 where TargetInstance isa 'Win32_Process'" & _
" and TargetInstance.Name = '" & WScript.Arguments(0) & "'"

str = "Bitte warten Sie bis die Anwendung vollstàndig gestartet ist."

Do
If blnLaeuft Then
wshShell.PopUp str, 60, WScript.Arguments(0), _
vbInformation Or vbSystemModal
blnLaeuft = False
End If
WScript.Sleep 1000
Loop

ЯR

Ähnliche fragen