我需要一种方法来使用 VBScript 确定是否打开了带有可见窗口的进程。
例如,当我关闭SolidWorks窗口时,该SolidWorks.exe
过程仍在运行。
我怎样才能知道哪个是哪个?有什么建议么?
我需要一种方法来使用 VBScript 确定是否打开了带有可见窗口的进程。
例如,当我关闭SolidWorks窗口时,该SolidWorks.exe
过程仍在运行。
我怎样才能知道哪个是哪个?有什么建议么?
也许您可以使用命令行程序tasklist.exe
来确定正确的窗口是否打开。
如果您运行tasklist /V /FI "IMAGENAME eq sldworks.exe"
并发现您感兴趣的过程与另一个过程之间存在差异,那么这可能会起作用。
假设您可以查找特定的窗口标题:
Dim pid = GetProcessId("sldworks.exe", "That window title")
If pid > 0 Then
MsgBox "Yay we found it"
End If
GetProcessId()
这是哪里
Function GetProcessId(imageName, windowTitle)
Dim currentUser, command, output, tasklist, tasks, i, cols
currentUser = CreateObject("Wscript.Network").UserName
command = "tasklist /V /FO csv"
command = command & " /FI ""USERNAME eq " + currentUser + """"
command = command & " /FI ""IMAGENAME eq " + imageName + """"
command = command & " /FI ""WINDOWTITLE eq " + windowTitle + """"
command = command & " /FI ""SESSIONNAME eq Console"""
' add more or different filters, see tasklist /?
output = Trim(Shell(command))
tasklist = Split(output, vbNewLine)
' starting at 1 skips first line (it contains the column headings only)
For i = 1 To UBound(tasklist) - 1
cols = Split(tasklist(i), """,""")
' a line is expected to have 9 columns (0-8)
If UBound(cols) = 8 Then
GetProcessId = Trim(cols(1))
Exit For
End If
Next
End Function
Function Shell(cmd)
Shell = WScript.CreateObject("WScript.Shell").Exec(cmd).StdOut.ReadAll()
End Function
您不必返回 PID,也可以返回True
/False
或提供的任何其他信息tasklist
。作为参考,tasklist
列索引是:
通过 WMI 可以实现与进程的更高级交互。如何在 VBScript 中使用它的大量示例遍布 Internet。搜索Win32_Process
。