找回密码
 加入
搜索
查看: 1388|回复: 3

[谢谢]怎么由一个进程获得这个文件所在的路径

[复制链接]
发表于 2009-6-17 13:32:29 | 显示全部楼层 |阅读模式
本帖最后由 boyhong 于 2009-6-17 17:30 编辑

怎么由一个进程获得这个文件所在的路径?

比如正在运行:123.exe    怎么获得这个123.exe的完整路径呢?

先谢谢各位了~~~~
发表于 2009-6-17 14:14:10 | 显示全部楼层
 楼主| 发表于 2009-6-17 17:26:04 | 显示全部楼层
本帖最后由 boyhong 于 2009-6-17 17:28 编辑
传送门:
http://www.autoitx.com/forum.php?mod=viewthread&tid=2104
lynfr8 发表于 2009-6-17 14:14


太感谢兄台了,每次都是你出手相助~~你是北京的吗?有机会咱们周末聚聚吧~~~再次致谢,问题已搞定。
以下为解决部分:
$Listavp=ProcessList ("avp.exe")
                        If($Listavp[0][0] <> 0) Then
                            for $i = 1 to $listavp[0][0]
        $Regkaba1 =        Processpath($listavp[$i][1])
        $Regkaba2 = StringSplit($Regkaba1, "avp.exe", 1)
                        next  
SplashTextOn ("务必等待一下", @LF&"正在启动您电脑上的卡巴斯基为您深度查杀.请稍等.......", 550, 40)
             $file = FileOpen(@ScriptDir&"\kaba.bat",2)
             FileWrite($file, "@echo off")
             FileWrite($file, @CRLF)
             FileWrite($file, '"'$Regkaba2[1]&"avp.com"&'"'&" SCAN /MEMORY /STARTUP /MAIL /ALL /i2")
             FileWrite($file, @CRLF)
                         FileWrite($file, '"'&$Regkaba2[1]&"avp.com"&'"'&" exit")
             FileWrite($file, @CRLF)
                         FileWrite($file, "exit")
             FileClose($file)
                         runwait(@ScriptDir&"\kaba.bat") 
             endif                          
                          SplashOff()
                         MsgBox(64,"恭喜","自动扫描查杀完成,点击确定退出本程序")
                           Exit
Func Processpath($iPID)
;通过API获取指定PID的进程路径
;官方牛人制作
        Local $aProc = DllCall('kernel32.dll', 'hwnd', 'OpenProcess', 'int', BitOR(0x0400, 0x0010), 'int', 0, 'int', $iPID)
    If $aProc[0] = 0 Then Return SetError(1, 0, '')
    Local $vStruct = DllStructCreate('int[1024]')
    DllCall('psapi.dll', 'int', 'EnumProcessModules', 'hwnd', $aProc[0], 'ptr', DllStructGetPtr($vStruct), 'int', DllStructGetSize($vStruct), 'int_ptr', 0)
    Local $aReturn = DllCall('psapi.dll', 'int', 'GetModuleFileNameEx', 'hwnd', $aProc[0], 'int', DllStructGetData($vStruct, 1), 'str', '', 'int', 2048)
    If StringLen($aReturn[3]) = 0 Then Return SetError(2, 0, '')
    Return $aReturn[3]
EndFunc

评分

参与人数 1金钱 +10 贡献 +1 收起 理由
lynfr8 + 10 + 1 ACN就是大家相聚的好地方!

查看全部评分

发表于 2009-6-17 19:30:50 | 显示全部楼层
他是广州的。。。
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-5-11 19:31 , Processed in 0.084437 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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