Gustav Brock
gustav at cactus.dk
Mon Mar 11 08:53:38 CDT 2013
Hi all
It took some efforts to find out how to do this: Close some applications by
their Windows title gracefully (=close, not terminate) and - but not before
they are closed - move on.
So here is how should you ever have the need :
<vbscript>
Call KillTask("Some application title")
Call KillTask("Some other application title")
Call AwaitProcess("taskkill.exe")
Call RunApp("<file name of registered application like: MyApp.mdb>")
' Supporting subfunctions
' -----------------------
Sub RunApp(ByVal strFile)
Dim objShell
Set objShell = CreateObject("WScript.Shell")
objShell.Run Chr(34) & strFile & Chr(34), 1, False
Set objShell = Nothing
End Sub
Sub KillTask(ByVal strWindowTitle)
Dim objShell
Set objShell = CreateObject("WScript.Shell")
objShell.Run "TaskKill.exe /FI ""WINDOWTITLE eq " & strWindowTitle & """",
7, False
Set objShell = Nothing
End Sub
Sub AwaitProcess(ByVal strProcess)
Dim objSvc
Dim strQuery
Dim colProcess
Dim intCount
Set objSvc = GetObject("winmgmts:root\cimv2")
strQuery = "select * from win32_process where name='" & strProcess & "'"
Do
Set colProcess = objSvc.Execquery(strQuery)
intCount = colProcess.Count
If intCount > 0 Then
' Wait a split second before checking again.
WScript.Sleep 300
End If
Loop Until intCount = 0
Set colProcess = Nothing
Set objSvc = Nothing
End Sub
</vbscript>
/gustav