找回密码
 加入
搜索
查看: 5040|回复: 9

[AU3基础] 怎么根据进程名判断该进程打开的文件名及路径?

  [复制链接]
发表于 2011-12-27 09:32:44 | 显示全部楼层 |阅读模式
本帖最后由 dhwc 于 2011-12-27 09:51 编辑

搜了半天,坛子里都是怎么根据进程名获取程序路径及文件名,请问怎样根据进程名判断该进程打开的文件名及路径?比如,现在用potplayer看电影,进程名potplayermini.exe,文件名d:\video\1.rmvb,不考虑多开的情况怎么实现??如果多开怎样根据活动窗口来查找?程序后台运行

谢谢,本人菜鸟,肯请指教
发表于 2011-12-27 09:44:06 | 显示全部楼层
_WinAPI_GetProcessCommandLine不知道行不行
 楼主| 发表于 2011-12-27 09:46:07 | 显示全部楼层
这个是获取进程的命令行吧?
发表于 2011-12-27 09:58:40 | 显示全部楼层
本帖最后由 netegg 于 2011-12-27 10:04 编辑

回复 3# dhwc
那么你以为打开文件是用的什么方式,难道光点击不发送命令行给系统吗
不对,明白你说的意思了,先打开应用,操作文件,然后获取文件信息?
 楼主| 发表于 2011-12-27 10:53:33 | 显示全部楼层
我说的就是怎样通过进程名获取该进程正在操作哪个文件?比如例子中的那个d:\video\1.rmvb

怎样来得到它???
发表于 2011-12-27 15:18:36 | 显示全部楼层
这个可能要hook了
 楼主| 发表于 2011-12-27 19:21:43 | 显示全部楼层
HOOK?楼上的高人能不能说多点啊?你这语焉不详啊
发表于 2011-12-28 11:35:01 | 显示全部楼层
希望高手提供
发表于 2011-12-28 14:30:21 | 显示全部楼层
你如果双击运行d:\video\1.rmvb,就是可以通过2# netegg兄所说的方法,调用_WinAPI_GetProcessCommandLine 函数获取进程的命令行参数。

另一种情况,你如果不带参数先运行了potplayermini.exe,而后将1.rmvb拖入这个程序的主界面中,这种情况,必须要枚举potplayermini.exe进程所打开的文件句柄,因为播放歌曲、播放视频必然会先打开这个文件并获取一个句柄。

可能会用到的系统函数:
1、Ntdll.NtQuerySystemInfo - 枚举系统中的所有句柄。
2、Ntdll.NtDuplicateObject - 将句柄复制到自身进程空间中。
3、Ntdll.NtQueryObject - 获取句柄所对应的对象名称。
4、StringInStr - 判断对象名称中是否包含视频文件的扩展名,如.rmvb。

评分

参与人数 1金钱 +50 收起 理由
afan + 50

查看全部评分

 楼主| 发表于 2011-12-28 16:54:00 | 显示全部楼层
内容谢谢楼上的高人!但是,能不能给个完整的代码?
而且你提到两种可能,能不能加个判断合并在一起?
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-12-25 22:39 , Processed in 0.099415 second(s), 27 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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