linmi 发表于 2009-1-2 13:55:50

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

查看了AU3的帮助文档,没能找到相关的帮助,只能来这里求救了。

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

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

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

[ 本帖最后由 linmi 于 2009-1-13 09:47 编辑 ]

liongodmien 发表于 2009-1-2 17:47:02

不知LZ的意思到底是如何?
如果这个WORK.EXE是相对固定的要这样运行,可以在注册表中设置下

linmi 发表于 2009-1-2 20:46:48

是这样的,因为被用WORD. exe打开的文件不单是没有后缀名的文件,还包括其他后缀名的文件,如TXT,DAT,等,如修改注册表的话则会相应的修改了文件原来的打开方式,且要修改的数量比较多。
我要的只是看文件的内容(纯文本格式)而已。
当一个文件获得焦点的时,使用一个命令,使其能返回一个路径值,然后用RUN命令调用WORD来打开。原理就是这样的。
目前就是找不一个方法能返回一个已获得焦点的文件的路径值。

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

[ 本帖最后由 linmi 于 2009-1-2 20:56 编辑 ]

sanhen 发表于 2009-1-2 21:30:35

不知这样做有什么作用?

liongodmien 发表于 2009-1-3 10:45:21

是这样的,因为被用WORD. exe打开的文件不单是没有后缀名的文件,还包括其他后缀名的文件,如TXT,DAT,等,如修改注册表的话则会相应的修改了文件原来的打开方式,且要修改的数量比较多。
我要的只是看文件的内容(纯文本格式)而已。
当一个文件获得焦点的时,使用一个命令,使其能返回一个路径值,然后用RUN命令调用WORD来打开。原理就是这样的。
目前就是找不一个方法能返回一个已获得焦点的文件的路径值。

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

那用修改好多!!只要在注册表那的*项增加一个命令项就行了,知道兔子和优化大师等那些增加‘用记事本打开’吗?

ynygu 发表于 2009-1-3 12:32:17

楼主这样做好像没什么实际义意

linmi 发表于 2009-1-3 21:02:09

至于有什么意义,这先暂且放至一边,就是不知道AUTOIT可否实现这样的功能。
谢谢!

xiaoqiangdai 发表于 2009-1-7 00:05:11

可以实现,代码如下:

$File_Name = FileOpenDialog("请选择软件", @ProgramFilesDir & "\", "程序(*.exe)|所有文件(*.*)")
msgbox(0,"软件名称: ",$File_Name)

linmi 发表于 2009-1-7 21:07:17

谢谢楼上的。
其实我就是不想通过选择文件对话框的形式的。
其实,我的意图有点类似在WINDOWS系统中,鼠标点击一个文件后,可以使用的SHIFT+DEL键就能删除该文件。
我就是想知道他是怎么返回此个文件的路径的。
不知道AUTOIT有没有这样的函数可以实现这样的功能而已。

sxd 发表于 2009-1-8 00:19:46

明白楼主的意思 只是我不知道怎么解决 呵呵

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

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



我用到的方面 一般都是取 资源管理器的 Edit1 来取当前选择的路径文件名没有取过

linmi 发表于 2009-1-9 13:52:50

原帖由 sxd 于 2009-1-8 00:19 发表 http://autoitx.com/images/common/back.gif

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

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


谢谢楼上的,你说的很正确。

akmm88 发表于 2009-1-9 17:19:44

设置一个hotkeyo
在热键函数里,查找当前窗口的lisview32的选中项目,通过判断选中项目的属性,可以得到目录名或文件名
这样应该能达到你的目的了。
我现在这没装AUTOIT,也没足够时间帮你写例程了。
udf 里有控制listview32的相关函数

linmi 发表于 2009-1-10 21:03:57

谢谢楼上的各位。
自己看了半天的帮助文档,还是弄不出个所以然。
能否给个例子讲解一下啊。
谢谢各位了。

78391493 发表于 2009-1-10 22:43:03

回复 9# linmi 的帖子

汗,MS自己的东西做起来当然容易。你把Windows的源代码给我我也可以做出来。。。

sxd 发表于 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
页: [1] 2
查看完整版本: 如何返回已选中的文件的文件名?(含完整路径)