找回密码
 加入
搜索
查看: 4578|回复: 26

请问怎么获取AU3编译的文件的关联文件目录及文件名

  [复制链接]
发表于 2009-11-28 12:20:15 | 显示全部楼层 |阅读模式
本帖最后由 drunk 于 2009-11-29 01:20 编辑

如题
好比我的关联文件是@Desktopdir的test.try
执行的应用文件是F:/的workfile.exe
我在关联文件的打开选项用workfile.exe写入数据到test.try
但问题是怎么获取那个关联文件的文件路径及文件名呢.
路径可以用@workingdir表示,但文件名怎么表示呢..

评分

参与人数 1金钱 +10 收起 理由
afan + 10 感谢主动将修改帖子分类为[已解决],请继续 ...

查看全部评分

 楼主| 发表于 2009-11-28 12:55:16 | 显示全部楼层
在线等ing...
发表于 2009-11-28 13:21:28 | 显示全部楼层
没搞懂LZ的意思。是不是就是要关联 *.try ,双击它可以调用 workfile.exe 打开?
那样需要写注册表
 楼主| 发表于 2009-11-28 13:56:41 | 显示全部楼层
不是,我也表达不好,你看我我的源代码吧。
#Include <Misc.au3>
#Include <File.au3>
#Include <Array.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <ButtonConstants.au3>
#include <WindowsConstants.au3>

Dim $PassWord , $PassWord2 , $DimPas , $DimPas2[10]

Dim $fCount[10] = ["0","1","2","3","4","5","6","7","8","9"]

If $CmdLine[0] <> 0 Then
    If $CmdLine[1] = "/adds" Then
                $GuiAS = GUICreate("请输入密码",520,270,-1,-1,$WS_POPUP)
                GUISetState(@SW_SHOW)
                $Group1 = GUICtrlCreateGroup("",5,20,510,240)
                $Group2 = GUICtrlCreateGroup("",500,0,16,21)
                $Group3 = GUICtrlCreateGroup("",482,0,16,21)
                $Lable1 = GUICtrlCreateLabel("×",502,7,12,12)
                $Lable2 = GUICtrlCreateLabel("——",484,7,12,12)
                $Lable3 = GUICtrlCreateLabel("Drunk文档加密程序",9,8,105,13)
                $Lable4 = GUICtrlCreateLabel("请输入密码:",110,60,80,13)
                $Lable5 = GUICtrlCreateLabel("请确认密码:",110,130,80,13)
                $Input1 = GUICtrlCreateInput("",110,80,300,20,$ES_PASSWORD)
                $Input2 = GUICtrlCreateInput("",110,150,300,20,$ES_PASSWORD)
                $Button1 = GUICtrlCreateButton("确  定",110,200,85,20,$BS_CENTER)
                $Button2 = GUICtrlCreateButton("取  消",323,200,85,20,$BS_CENTER)
                GUISetBkColor(0xF5F5F5,$GuiAS)
                While 1
                        $msg = GUIGetMsg($GuiAS)
                        $Cur = GUIGetCursorInfo($GuiAS)
                        Select
                                Case $msg = $gui_event_close
                                        Exit
                                Case $msg = $Button1
                                        adds()
                                Case $msg = $Button2
                                        Exit
                                Case $Cur[4] = $Lable1
                                        GUICtrlSetCursor($Lable1,0)
                                        If $Cur[2] = 1 Then Exit
                                Case $Cur[4] = $Lable2
                                        GUICtrlSetCursor($Lable2,0)
                                        If $Cur[2] = 1 Then GUISetState(@SW_MINIMIZE,$GuiAS)
                                Case $Cur[4] <> $Lable1
                                        If $Cur[3] = 1 Then
                                                If WinActive("请输入密码") Then
                                                        Dim $PosDiff[2]
                                                        $MousePos = MouseGetPos()
                                                        $WinPos = WinGetPos($GuiAS, "")
                                                        $PosDiff[0] = $WinPos[0] - $MousePos[0]
                                                        $PosDiff[1] = $WinPos[1] - $MousePos[1]
                                                        While _IsPressed("02", DllOpen("user32.dll"))
                                                                $MousePos = MouseGetPos()
                                                                WinMove($GuiAS, "", $MousePos[0] + $PosDiff[0], $MousePos[1] + $PosDiff[1])
                                                        WEnd
                                                EndIf
                                        EndIf
                        EndSelect
                WEnd
        EndIf
EndIf

Func adds()
        $PassWord = GUICtrlRead($Input1)
        $PassWord2 = GUICtrlRead($Input2)
        If $PassWord <> $PassWord2 Then
                MsgBox(16,"错误!","两次密码输入不一致,请重新输入!",5,$GuiAS)
                GUICtrlSetData($Input1,"")
                GUICtrlSetData($Input2,"")
        Else
                For $i = 0 To 9
                        $DimPas = Random(1,31,1)
                        $DimPas2[$i] = ChrW($DimPas)
                Next
                $DimPass = _ArrayToString($DimPas2,"")
                _FileWriteToLine(@WorkingDir&"\test.drunk",1,$DimPass)
        EndIf
EndFunc
我是要获取@WorkingDir&"\test.drunk"的完整路径。我这里是测试效果才指定到文件,而如果我换个“.drunk”的文件的话写入数据还是到这同一个文件了,我的意思是将上述指定文件换成变量。而我不会表示那个变量。至于关联文件我已经手动设置关联了
 楼主| 发表于 2009-11-28 13:59:20 | 显示全部楼层
就像au3的源代码编译成exe一样
我随便点一个test.au3右键,选择编译那么就会编译当前的test.au3而不会执行到autoit.exe本身或者其他文件
 楼主| 发表于 2009-11-28 14:07:09 | 显示全部楼层
我也不知道我表达清楚没
我再解释下
从我上面的代码,那么@ScriptFullPath是桌面的addstxt.au3而不是我需要写入数据的文件test.drunk
而我需要的是获取test.drunk文件完整路径的变量。
我已经添加了".drunk"关联到addstxt.au3.我是要在test.drunk上面右击选择addstxt.au3写入数据
发表于 2009-11-28 14:10:27 | 显示全部楼层
就像au3的源代码编译成exe一样
我随便点一个test.au3右键,选择编译那么就会编译当前的test.au3而不会执行 ...
drunk 发表于 2009-11-28 13:59


"就像au3的源代码编译成exe一样'=======那就是写注册表,用%1 代表文件完整路径
 楼主| 发表于 2009-11-28 14:17:26 | 显示全部楼层
那请问下怎么写注册表啊
 楼主| 发表于 2009-11-28 14:40:42 | 显示全部楼层
我找到了你前面发的写注册表的
通过写注册表实现~
afan 发表于 2009-9-5 22:57


请注意我上面发的代码的第78行
那个"test.drunk"其实应该是个宏变量,但我不知道怎么表示
那个红变量要表示我鼠标点击的程序而不是执行程序".exe"
发表于 2009-11-28 14:58:18 | 显示全部楼层
我找到了你前面发的写注册表的


请注意我上面发的代码的第78行
那个"test.drunk"其实应该是个宏变量,但 ...
drunk 发表于 2009-11-28 14:40



    我怎么越看越晕。。。 你到底是想如何操作什么呢? 比如:在桌面选择一个文件,右键选择xxx...
 楼主| 发表于 2009-11-28 15:04:22 | 显示全部楼层
我也晕了..
我已经关联了..
我需要的不是关联,而是获取一个右键点的那个文件的完整路径及文件名啊..
AUtoit的帮助里只有执行文件工作目录的宏变量
而我需要的是关联文件目录的完整路径及文件名
 楼主| 发表于 2009-11-28 18:20:27 | 显示全部楼层
寒冷的冬天,冻了一天了。Who can help me
 楼主| 发表于 2009-11-29 00:18:03 | 显示全部楼层
郁闷啊,哪位知道的高手帮帮忙啊。。。我搜来搜去在百度搜到自己的问题了
 楼主| 发表于 2009-11-29 00:21:21 | 显示全部楼层
在Google搜索关键词“获取关联文件名”,此问题地址排第一
发表于 2009-11-29 00:30:54 | 显示全部楼层
回复 13# drunk


    搞笑啊~ 呵呵~
看看是不是这个意思~

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-10-6 12:23 , Processed in 0.107767 second(s), 21 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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