Board logo

标题: [已解决]VBS如何运行程序并返回进程ID? [打印本页]

作者: defanive    时间: 2009-6-13 17:11     标题: [已解决]VBS如何运行程序并返回进程ID?

vbs中,有没有什么函数能够运行程序并且同时返回进程ID?

因为可能要处理的进程重名,例如我运行一个qq但是如果有两个qq.exe,那么就不知道哪个才是刚刚运行的vbs的进程ID了

两次进程列表比对就算了


求助下

[ 本帖最后由 defanive 于 2009-6-13 19:08 编辑 ]
作者: rat    时间: 2009-6-13 18:19

  1. MsgBox CStr(CreateProcess("notepad"))
  2. Function CreateProcess(sPath)
  3. Dim oShell, oProcess
  4. Set oShell = CreateObject("WScript.Shell")
  5. Set oProcess = oShell.Exec(sPath)
  6. CreateProcess = oProcess.ProcessID
  7. Set oProcess = Nothing
  8. Set oShell = Nothing
  9. End Function
复制代码

作者: defanive    时间: 2009-6-13 18:33

原来Exec方法返回的对象有这个属性捏。。。
汗一个,没仔细看的后果。。。
作者: slore    时间: 2009-6-13 18:39

这个是得到自己调用的。。。


WMI可以得到进程的
作者: rat    时间: 2009-6-13 22:50

WMI的,发现比WScript的Exec好,都运行下cmd就知道了。
参考:
http://msdn.microsoft.com/en-us/library/aa389388(VS.85).aspx
  1. Dim iProcessID
  2. If CreateProcess2("cmd", iProcessID) Then MsgBox CStr(iProcessID)
  3. Function CreateProcess2(sPath, iProcessID)
  4. Dim oProcess, iReturn
  5. Set oProcess = GetObject("winmgmts:root\cimv2:Win32_Process")
  6. iReturn = oProcess.Create(sPath, Null, Null, iProcessID)
  7. Set oProcess = Nothing
  8. CreateProcess2 = iReturn = 0
  9. End Function
复制代码





欢迎光临 批处理之家 (http://bathome.net./) Powered by Discuz! 7.2