找回密码
 加入
搜索
查看: 4762|回复: 18

如何返回已选中的文件的文件名?(含完整路径)

[复制链接]
发表于 2009-1-2 13:55:50 | 显示全部楼层 |阅读模式
查看了AU3的帮助文档,没能找到相关的帮助,只能来这里求救了。

设想是这样的:
鼠标点击文件,单击而非打开文件,然后结合使用键盘的快捷键,调用相应的程序打开文件。

例如:鼠标点选文件 test (无文件后缀名),然后按字母O键调用系统中的WORK。EXE打开这个文件。

应使用哪个函数,如何写呢?

[ 本帖最后由 linmi 于 2009-1-13 09:47 编辑 ]
发表于 2009-1-2 17:47:02 | 显示全部楼层
不知LZ的意思到底是如何?
如果这个WORK.EXE是相对固定的要这样运行,可以在注册表中设置下
 楼主| 发表于 2009-1-2 20:46:48 | 显示全部楼层
是这样的,因为被用WORD. exe打开的文件不单是没有后缀名的文件,还包括其他后缀名的文件,如TXT,DAT,等,如修改注册表的话则会相应的修改了文件原来的打开方式,且要修改的数量比较多。
我要的只是看文件的内容(纯文本格式)而已。
当一个文件获得焦点的时,使用一个命令,使其能返回一个路径值,然后用RUN命令调用WORD来打开。原理就是这样的。
目前就是找不一个方法能返回一个已获得焦点的文件的路径值。

Run ( "文件名" [, "工作目录" [, 显示标志[, 可选标志]]] )

[ 本帖最后由 linmi 于 2009-1-2 20:56 编辑 ]
发表于 2009-1-2 21:30:35 | 显示全部楼层
不知这样做有什么作用?
发表于 2009-1-3 10:45:21 | 显示全部楼层
是这样的,因为被用WORD. exe打开的文件不单是没有后缀名的文件,还包括其他后缀名的文件,如TXT,DAT,等,如修改注册表的话则会相应的修改了文件原来的打开方式,且要修改的数量比较多。
我要的只是看文件的内容(纯文本格式)而已。
当一个文件获得焦点的时,使用一个命令,使其能返回一个路径值,然后用RUN命令调用WORD来打开。原理就是这样的。
目前就是找不一个方法能返回一个已获得焦点的文件的路径值。

Run ( "文件名" [, "工作目录" [, 显示标志[, 可选标志]]] )

那用修改好多!!只要在注册表那的*项增加一个命令项就行了,知道兔子和优化大师等那些增加‘用记事本打开’吗?
发表于 2009-1-3 12:32:17 | 显示全部楼层
楼主这样做好像没什么实际义意
 楼主| 发表于 2009-1-3 21:02:09 | 显示全部楼层
至于有什么意义,这先暂且放至一边,就是不知道AUTOIT可否实现这样的功能。
谢谢!
发表于 2009-1-7 00:05:11 | 显示全部楼层
可以实现,代码如下:

$File_Name = FileOpenDialog("请选择软件", @ProgramFilesDir & "\", "程序(*.exe)|所有文件(*.*)")
msgbox(0,"软件名称: ",$File_Name)
 楼主| 发表于 2009-1-7 21:07:17 | 显示全部楼层
谢谢楼上的。
其实我就是不想通过选择文件对话框的形式的。
其实,我的意图有点类似在WINDOWS系统中,鼠标点击一个文件后,可以使用的SHIFT+DEL键就能删除该文件。
我就是想知道他是怎么返回此个文件的路径的。
不知道AUTOIT有没有这样的函数可以实现这样的功能而已。
发表于 2009-1-8 00:19:46 | 显示全部楼层
明白楼主的意思 只是我不知道怎么解决 呵呵

楼主就是 要选中一个文件以后 用不同的快捷键调用不同的程序来打开当前选择的文件

卡在了 如何取得 当前选中的文件的 完整路径上



我用到的方面 一般都是取 资源管理器的 Edit1 来取当前选择的路径  文件名没有取过
 楼主| 发表于 2009-1-9 13:52:50 | 显示全部楼层
原帖由 sxd 于 2009-1-8 00:19 发表

楼主就是 要选中一个文件以后 用不同的快捷键调用不同的程序来打开当前选择的文件

卡在了 如何取得 当前选中的文件的 完整路径上


谢谢楼上的,你说的很正确。
发表于 2009-1-9 17:19:44 | 显示全部楼层
设置一个hotkey  o
在热键函数里,查找当前窗口的lisview32的选中项目,通过判断选中项目的属性,可以得到目录名或文件名
这样应该能达到你的目的了。
我现在这没装AUTOIT,也没足够时间帮你写例程了。
udf 里有控制listview32的相关函数
 楼主| 发表于 2009-1-10 21:03:57 | 显示全部楼层
谢谢楼上的各位。
自己看了半天的帮助文档,还是弄不出个所以然。
能否给个例子讲解一下啊。
谢谢各位了。
发表于 2009-1-10 22:43:03 | 显示全部楼层

回复 9# linmi 的帖子

汗,MS自己的东西做起来当然容易。你把Windows的源代码给我我也可以做出来。。。
发表于 2009-1-11 13:06:27 | 显示全部楼层
唉 我太笨了  在udf里转了一大圈 终于写出来了  发现......原来不用这么麻烦 唉

PS:先设置成地址栏显示完整路径

HotKeySet("o", "GetFocusedFullPath")

Func GetFocusedFullPath()
        $ListViewHWnd = ControlGetHandle("", "", "SysListView321")
        $ItemSelectedId = ControlListView("", "", $ListViewHWnd, "GetSelected")
        $ItemText = ControlListView("", "", $ListViewHWnd, "GetText", $ItemSelectedId)
        $Path = ControlGetText("", "", "Edit1")
        MsgBox(0, "", $Path & $ItemText)
EndFunc   ;==>GetFocusedFullPath

While 1
        Sleep(1000)
WEnd
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-5-19 18:40 , Processed in 0.079367 second(s), 21 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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