开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

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

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


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

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

12
返回列表 发新帖
楼主: 安小狠
收起左侧

[已解决] 易语言怎么取进程的目录

 关闭 [复制链接]
结帖率:0% (0/1)
发表于 2012-1-30 16:34:06 | 显示全部楼层   山西省晋城市
不会!!!!!  呵呵
回复

使用道具 举报

结帖率:83% (15/18)
发表于 2012-1-30 16:43:15 | 显示全部楼层   福建省南平市
[e]子程序名 返回值类型 公开 备注
取进程号 整数型   
参数名 类型 参考 可空 数组 备注
_进程名 文本型       如:QQ.exe
_区分大小写 逻辑型   √   默认真


变量名 类型 静态 数组 备注
进程列表 进程信息   0   
a 整数型     


如果真 (是否为空 (_区分大小写))
┊  _区分大小写 = 真
如果真结束
进程列表 = 取系统进程列表 ()
计次循环首 (取数组成员数 (进程列表), a)
┊  如果真 (进程列表 [a].进程名称 = _进程名 或 _区分大小写 = 假 且 到小写 (进程列表 [a].进程名称) = 到小写 (_进程名))
┊  ┊  返回 (进程列表 [a].进程标识符)
┊  如果真结束
┊   
计次循环尾 ()

子程序名 返回值类型 公开 备注
取进程路径 文本型   
参数名 类型 参考 可空 数组 备注
进程号 整数型     


变量名 类型 静态 数组 备注
全路径名 文本型     
进程句柄 整数型     
系统目录 文本型     


系统目录 = 取空白文本 (255)
GetSystemDirectoryA (系统目录, 255)
' ------------------------------------------
进程句柄 = OpenProcess (1040, 0, 进程号)
全路径名 = 取空白文本 (255)
如果真 (GetModuleFileNameExA (进程句柄, 0, 全路径名, 255) ≠ 0)
┊  全路径名 = 子文本替换 (全路径名, “\??\”, “”, , , 真)
┊  如果真 (到小写 (取文本左边 (全路径名, 12)) = “\systemroot\”)
┊  ┊  输出调试文本 (到小写 (取文本左边 (全路径名, 12)))
┊  ┊  全路径名 = 子文本替换 (全路径名, “\systemroot\”, 系统目录, , , 假)
┊  如果真结束
┊  返回 (全路径名)
如果真结束
返回 (“”)


DLL命令名 返回值数据类型 公开 备注
OpenProcess 整数型  打开一个现有进程的句柄。返回值Long,如执行成功,返回进程句柄;零表示失败。会设置GetLastErrora。
DLL库文件名
kernel32
在DLL库中对应命令名
OpenProcess
参数名 类型 传址 数组 备注
dwDesiredAccess 整数型     Long,指定这个句柄要求的访问方法。指定API32.TXT文件中以PROCESS_???开头的一个或多个常数
bInheritHandle 整数型     Long,如句柄能够由子进程继承,则为TRUE
dwProcessId 整数型     Long,要打开那个进程的进程标识符


DLL命令名 返回值数据类型 公开 备注
GetModuleFileNameExA 整数型  获取一个已装载模板的完整路径名称。返回值Long,如执行成功,返回复制到lpFileName的实际字符数量;零表示失败。会设置GetLastErrora。
DLL库文件名
psapi.dll
在DLL库中对应命令名

参数名 类型 传址 数组 备注
hModule 整数型     备注1无法读取,请您提供该API名报易BBS中ID号klasp完善。
dd 整数型      
lpFileName 文本型     备注2无法读取,请您提供该API名报易BBS中ID号klasp完善。
nSize 整数型     备注3无法读取,请您提供该API名报易BBS中ID号klasp完善。


DLL命令名 返回值数据类型 公开 备注
GetSystemDirectoryA 整数型  这个函数能取得Windows系统目录(System目录)的完整路径名。在这个目录中,包含了所有必要的系统文件。根据微软的标准,其他定制控件和一些共享组件也可放到这个目录。通常应避免在这个目录里创建文件。在网络环境中,往往需要管理员权限才可对这个目录进行写操作。返回值Long,装载到lpBuffer缓冲区的字符数量。如lpBuffer不够大,不能容下文件名,则返回要求的缓冲区长度。
DLL库文件名
kernel32
在DLL库中对应命令名
GetSystemDirectoryA
参数名 类型 传址 数组 备注
lpBuffer 文本型     备注1无法读取,请您提供该API名报易BBS中ID号klasp完善。
nSize 整数型     备注2无法读取,请您提供该API名报易BBS中ID号klasp完善。





i本程序使用的支持库列表
eAPI (应用接口支持库)


i以下为文本格式源码,直接复制粘贴至易语言IDE中即可.

.版本 2
.支持库 eAPI
.子程序 取进程号, 整数型
.参数 _进程名, 文本型, , 如:QQ.exe
.参数 _区分大小写, 逻辑型, 可空, 默认真
.局部变量 进程列表, 进程信息, , "0"
.局部变量 a, 整数型
.如果真 (是否为空 (_区分大小写))
    _区分大小写 = 真
.如果真结束
进程列表 = 取系统进程列表 ()
.计次循环首 (取数组成员数 (进程列表), a)
    .如果真 (进程列表 [a].进程名称 = _进程名 或 _区分大小写 = 假 且 到小写 (进程列表 [a].进程名称) = 到小写 (_进程名))
        返回 (进程列表 [a].进程标识符)
    .如果真结束

.计次循环尾 ()
.子程序 取进程路径, 文本型
.参数 进程号, 整数型
.局部变量 全路径名, 文本型
.局部变量 进程句柄, 整数型
.局部变量 系统目录, 文本型
系统目录 = 取空白文本 (255)
GetSystemDirectoryA (系统目录, 255)
' ------------------------------------------
进程句柄 = OpenProcess (1040, 0, 进程号)
全路径名 = 取空白文本 (255)
.如果真 (GetModuleFileNameExA (进程句柄, 0, 全路径名, 255) ≠ 0)
    全路径名 = 子文本替换 (全路径名, “\??\”, “”, , , 真)
    .如果真 (到小写 (取文本左边 (全路径名, 12)) = “\systemroot\”)
        输出调试文本 (到小写 (取文本左边 (全路径名, 12)))
        全路径名 = 子文本替换 (全路径名, “\systemroot\”, 系统目录, , , 假)
    .如果真结束
    返回 (全路径名)
.如果真结束
返回 (“”)
.DLL命令 OpenProcess, 整数型, "kernel32", "OpenProcess", , 打开一个现有进程的句柄。返回值Long,如执行成功,返回进程句柄;零表示失败。会设置GetLastErrora。
    .参数 dwDesiredAccess, 整数型, , Long,指定这个句柄要求的访问方法。指定API32.TXT文件中以PROCESS_???开头的一个或多个常数
    .参数 bInheritHandle, 整数型, , Long,如句柄能够由子进程继承,则为TRUE
    .参数 dwProcessId, 整数型, , Long,要打开那个进程的进程标识符
.DLL命令 GetModuleFileNameExA, 整数型, "psapi.dll", , , 获取一个已装载模板的完整路径名称。返回值Long,如执行成功,返回复制到lpFileName的实际字符数量;零表示失败。会设置GetLastErrora。
    .参数 hModule, 整数型, , 备注1无法读取,请您提供该API名报易BBS中ID号klasp完善。
    .参数 dd, 整数型
    .参数 lpFileName, 文本型, , 备注2无法读取,请您提供该API名报易BBS中ID号klasp完善。
    .参数 nSize, 整数型, , 备注3无法读取,请您提供该API名报易BBS中ID号klasp完善。
.DLL命令 GetSystemDirectoryA, 整数型, "kernel32", "GetSystemDirectoryA", , 这个函数能取得Windows系统目录(System目录)的完整路径名。在这个目录中,包含了所有必要的系统文件。根据微软的标准,其他定制控件和一些共享组件也可放到这个目录。通常应避免在这个目录里创建文件。在网络环境中,往往需要管理员权限才可对这个目录进行写操作。返回值Long,装载到lpBuffer缓冲区的字符数量。如lpBuffer不够大,不能容下文件名,则返回要求的缓冲区长度。
    .参数 lpBuffer, 文本型, , 备注1无法读取,请您提供该API名报易BBS中ID号klasp完善。
    .参数 nSize, 整数型, , 备注2无法读取,请您提供该API名报易BBS中ID号klasp完善。
[/e]
回复

使用道具 举报

结帖率:51% (18/35)
发表于 2012-1-30 16:50:08 | 显示全部楼层   江西省九江市
{:3_232:}{:3_232:}学习下
回复

使用道具 举报

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

本版积分规则 致发广告者

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

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

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