|

楼主 |
发表于 2015-1-26 11:35:12
|
显示全部楼层
四川省宜宾市
感觉精易模块的板主没有明白这个BUG所在吧。我再补充说明
用 tasklist 命令显示出 ,进程ID=0时,进程名是:System Idle Process
进程_取程序路径(0)取进程ID为0进程路径, 得到的路径名称要么返回空,要么返回“System Idle Process”,可是返回结果却是当前进程。
图像名 PID 会话名 会话# 内存使用
========================= ====== ================ ======== ============
System Idle Process 0 Console 0 16 K
System 4 Console 0 64 K
smss.exe 680 Console 0 48 K
csrss.exe 736 Console 0 9,348 K
测试程序贴下
.版本 2
.支持库 spec
.支持库 eAPI
.子程序 _按钮1_被单击
.局部变量 wb, 文本型
.局部变量 临时文件名, 文本型
wb = 取文本 (“本进程的路径:%T ,在内存中存在的个数: %d %n”, 进程_取程序路径 (进程_取自进程ID ()), 进程_指定进程名计数 (进程_取程序路径 (进程_取自进程ID ())))
临时文件名 = 取临时文件名 () + “.bat”
写到文件 (临时文件名, 到字节集 (“C:\windows\system32\tasklist.exe ” + “ > D:\ps.txt”))
运行 (临时文件名, 假, )
Sleep (500)
运行 (“notepad ” + “D:\ps.txt”, 假, )
删除文件 (临时文件名)
删除文件 (“D:\ps.txt”)
调试输出 (wb)
信息框 (“错误:统计本进程路径在内存中的运行个数,只能有一个,结果是返回2个。查其错误原因是 把 进程ID=0时,取进程路径返回结果不对。进程ID=0,通过任务管理器查看出进程路径是:System Idle Process,这应该是 BUG吧?”, 0, , )
.子程序 进程_指定进程名计数, 整数型, 公开, 取内存中正在运行的某进程数,只检查文件名,也可全路径名,避免重复运行
.参数 进程名, 文本型, , 可用 取执行文件名() 或 进程_取程序路径 (进程_取自进程ID ())
.局部变量 进程, 进程信息, , "0"
.局部变量 计次, 整数型
.局部变量 进程名2, 文本型
.局部变量 计数, 整数型
.局部变量 pf, 文本型
进程名2 = 文件_取文件名 (进程名, 真)
进程 = 取系统进程列表 ()
pf = 文件_取路径盘符 (进程名)
.计次循环首 (取数组成员数 (进程), 计次)
.如果 (pf ≠ “”)
.如果真 (文本比较 (进程_取程序路径 (进程 [计次].进程标识符), 进程名, 假) = 0)
调试输出 (进程 [计次].进程标识符, 进程_取程序路径 (进程 [计次].进程标识符))
计数 = 计数 + 1
.如果真结束
.否则
.如果真 (文本比较 (进程 [计次].进程名称, 进程名2, 假) = 0)
计数 = 计数 + 1
.如果真结束
.如果结束
.计次循环尾 ()
返回 (计数)
|
|