找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 15305|回复: 4

[已解决]VBS如何运行程序并返回进程ID?

[复制链接]
发表于 2009-6-13 17:11:17 | 显示全部楼层 |阅读模式
vbs中,有没有什么函数能够运行程序并且同时返回进程ID?

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

两次进程列表比对就算了


求助下

[ 本帖最后由 defanive 于 2009-6-13 19:08 编辑 ]
发表于 2009-6-13 18:19:35 | 显示全部楼层
  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
复制代码

评分

参与人数 1PB +10 收起 理由
defanive + 10 rat深有造诣啊!

查看全部评分

 楼主| 发表于 2009-6-13 18:33:08 | 显示全部楼层
原来Exec方法返回的对象有这个属性捏。。。
汗一个,没仔细看的后果。。。
发表于 2009-6-13 18:39:36 | 显示全部楼层
这个是得到自己调用的。。。


WMI可以得到进程的
发表于 2009-6-13 22:50:43 | 显示全部楼层
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
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 06:48 , Processed in 0.024382 second(s), 12 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表