找回密码
 加入
搜索
查看: 3114|回复: 4

[AU3基础] 如何得到当前程序运行所在盘符

[复制链接]
发表于 2013-11-13 00:41:50 | 显示全部楼层 |阅读模式
本帖最后由 blackeyes 于 2013-11-13 00:55 编辑

新手第一个问题啊,哈哈,望高手给予指点,谢谢了

在本论坛搜索了一下其它的帖子,看得有点迷糊了,我具体说一下我的问题

我编译了一个程序,运行此程序,此程序我放在光盘上,但因为每台电脑分区不同,所以每台电脑的光盘盘符是不一样的,此程序参数里需要具体指定当前光驱盘符(不能用相对路径),用哪个函数可以得到当前程序所在的盘符,如果我在I:盘上运行的此程序ABC.EXE,如何得到当前光驱“I:”盘符啊

因为此程序里要调用别的程序,调用时还要带参数,而且此参数不能用相对路径,例如 TEST1.EXE GET="\PATH\ABC.INI" 这样的相对路径就不行,必须是绝对路径,例如:TEST1.EXE GET="I:\PATH\\ABC.INI"

_WinAPI_GetProcessFileName([$PID]),这个函数可以吗?具体如何调用?

像下面这样?
$path=_WinAPI_GetProcessFileName(“ABC.EXE”)
这样能得到ABC.EXE当前所在盘符吗?
 楼主| 发表于 2013-11-13 01:52:46 | 显示全部楼层
找到答案了,用下面函数
$Pid = ProcessExists("abc.exe")

$ProDir = _GetDir(_WinAPI_GetProcessFileName($Pid))

Func _GetDir($PathData, $Flag = 1)
        $var = StringSplit($PathData, "\")
        If Not @error Then
                $FileName = $var[UBound($var) - 1] ;文件名
                $FileDir = $var[UBound($var) - 2] ;文件所在目录名
                $FileFullPath = StringTrimRight($PathData, StringLen($FileName));文件全目录
        Else
                SetError(-1)
                Return -1 ;路径错误
        EndIf

        Switch $Flag
                Case 1
                        Return $FileFullPath ;返回全部目录,不包括文件名
                Case 2
                        Return $FileName ;返回文件名
                Case 3
                        Return $FileDir ;返回父母目录一个目录的名字
        EndSwitch ;==>_GetDir
EndFunc
发表于 2013-11-13 07:28:47 | 显示全部楼层
回复 2# blackeyes

楼主,AU3内置很多“宏”,比如:@ScriptDir
查看下帮助文档,你会有更多收获。
建议新上手的朋友,有事没事都可以多翻看下帮助。
发表于 2013-11-13 10:49:18 | 显示全部楼层
正则学的烂,献丑下
$s= StringRegExp(@ScriptFullPath,'.\:',1)
MsgBox(0,'',$s[0])
发表于 2013-11-13 22:02:59 | 显示全部楼层
MsgBox(0,0,StringLeft(@ScriptDir,1)) 这个就可以了。获取到的是C
如果要C:\就是
MsgBox(0,0,StringLeft(@ScriptDir,3))
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-11-16 16:55 , Processed in 0.074353 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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