开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 2079|回复: 4
收起左侧

[已解决] 进程_取程序路径 入口参数 进程ID=0 时,返回路径是程序进程自身路径

[复制链接]
发表于 2015-1-22 16:44:45 | 显示全部楼层 |阅读模式   四川省宜宾市
本帖最后由 萧阳天 于 2015-1-30 21:08 编辑

调试输出 (进程_取程序路径 (0))
输入的值为下行,明显是BUG,请查
* “C:\DOCUME~1\cicyb\LOCALS~1\Temp\e_debug\EDV1AE.tmp”
结帖率:100% (9/9)
发表于 2015-1-30 21:08:19 | 显示全部楼层   湖南省*
这是取进程路径,不是取进程名,为零一般代表自身路径。
回复 支持 反对

使用道具 举报

 楼主| 发表于 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
        .如果真结束
    .如果结束
.计次循环尾 ()
返回 (计数)

回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-1-24 00:01:13 | 显示全部楼层   广东省肇庆市
打开任务管理器,可看到,进程ID 0 的进程名是系统进程, system idle process。这就是错误所在。
自进程的ID ,不可能是 0.
回复 支持 反对

使用道具 举报

结帖率:100% (11/11)

签到天数: 15 天

发表于 2015-1-22 21:02:45 | 显示全部楼层   广东省阳江市
这个有什么问题?不是输出了自身的进程了么?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
网站简介:精易论坛成立于2009年,是一个程序设计学习交流技术论坛,隶属于揭阳市揭东区精易科技有限公司所有。
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

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