找回密码
 加入
搜索
查看: 5239|回复: 11

[AU3基础] Autoit怎样出现选择文件对话框?

  [复制链接]
发表于 2011-6-25 21:01:20 | 显示全部楼层 |阅读模式
FileSelectFolder 命令作用是打开一个选择框,让你选择某个文件夹。然后我可以把文件夹路径给变量
我想知道一个命令,可以打开一个选择框,让你选择某个文件,这样就可以把文件(而不是文件夹)的路径给变量
谢谢大家!
发表于 2011-6-25 21:06:20 | 显示全部楼层
FileOpenDialog
发表于 2011-6-25 21:10:33 | 显示全部楼层
FileOpenDialog
--------------------------------------------------------------------------------

显示一个文件打开对话框.


FileOpenDialog ( "标题", "起始目录", "文件类型" [, 选项 [, "默认文件名" [, 窗口句柄]]] )




参数

标题  文件打开对话框的标题.
起始目录 在文件选择对话框的文件树中显示的起始目录.
文件类型 筛选文件类型,例如:"所有文件(*.*)" 或 "文本文档(*.txt)" 又或者一个筛选组"所有文件 (*.*)|文本文件 (*.txt)" (参考备注).
选项 [可选参数] 对话框相关选项:若要同时应用多个选项,只需把各个数值加起来即可.
  1 = (如果用户键入文件名则)目标文件必须确实存在
  2 = (如果用户键入路径,并且以斜杠"\"结束则)路径必须确实存在
  4 = 允许选择多个文件
  8 = (如果目标文件并不存在则)提示用户(弹出对话框)可创建新文件
默认文件名 [可选参数] 提示用户可打开的默认文件名(在文件名列表框中预填此文件名,默认为空"").
窗口句柄 [可选参数] 指定这个对话框的父窗口的窗口句柄.



返回值

成功: 返回选中文件的完整路径.如果选中多个文件则以竖线分割,例如"目录|文件1|文件2|..."
失败: 设置 @error
@error: 1 - 文件选择失败.
2 - 无效文件类型筛选.



注意/说明

如需筛选多种文件类型请参照下面的示例在 文件类型 参数中使用分号来分隔每个文件类型(并把它们放在小括号内).
多组筛选请使用管道符 "|"

如果有指定默认文件名参数,则选项参数也必须指定.如果不需要指定选项则使用数值 0 即可.

Windows 下有些特殊的文件夹(比如说"我的文档")也可以用来作为起始目录使用,详情请查看附录.

@WorkingDir 可以成功的返回.
 楼主| 发表于 2011-6-25 21:16:43 | 显示全部楼层
谢谢大家!但是出现的那个对话框和fileselectfolder的不一样哦
一样的可以吗
发表于 2011-6-25 21:24:20 | 显示全部楼层
谢谢大家!但是出现的那个对话框和fileselectfolder的不一样哦
一样的可以吗
winniesi 发表于 2011-6-25 21:16



    为什么要一样呢?若实在要一样,只有自己写了
发表于 2011-6-26 06:28:30 | 显示全部楼层
本帖最后由 netegg 于 2011-6-26 06:29 编辑

楼主要的是所有文件树吗,可以是可以,不过如果文件多的话不知道楼主有没有耐心等到所有文件就位,可以参考下udf区那个三态复选树看看
发表于 2011-6-26 08:26:57 | 显示全部楼层
本帖最后由 pengmo 于 2011-6-26 08:32 编辑

WINDOWS 的文件对话框有两种
一种是文件夹对话框
是以树形结构显示的,用FileSelectFolder函数,只支持选择一个文件夹。

另一种是文件对话框
是以目录形式显示的,用FileOpenDialog函数,只支持选择一个或多个文件,不支持选择文件夹。而且可以自己选择样式,分为高级样式和普通样式。(高级样式左侧有文件列表)。

如果楼主想用文件夹对话框选择文件的话,Au3中应该没有提供现成的函数,需要自己写。
问题是,在WINDOWS下大家都早已经习惯,以上两种方式选择自己需要的文件或文件夹。为什么要改变这种习惯,非要用文件夹对话框打开文件呢?
我想自己开发出的程序好与坏,除了稳定性外,用户使用习惯,也是十分重要的。不要轻易改变这种习惯,呵呵。 希望对你有所帮助。
发表于 2011-6-26 08:30:51 | 显示全部楼层
WINDOWS 的文件对话框有两种
一种是文件夹对话框
是以树形结构显示的,用FileSelectFolder函数,只支持选 ...
pengmo 发表于 2011-6-26 08:26


你的“是以目录形式显示的,用FileOpenDialog函数,只支持选择一个或多个文件,不支持选择文件夹。而且可以自己选择样式,分为高级样式和普通样式。(高级样式左侧有文件列表)。” -----------  那来的高级和普通之分?样式在那里选 ?
发表于 2011-6-26 08:44:55 | 显示全部楼层
回复 8# happytc


由于自己是从事VC开发,所以很多时候是用AU3调用VC的DLL,或是将VC代码改写成Au3版本使用。
我所说的高级风格就是OFN_EXPLORER,只在WIN2000之后的系统支持(XP也支持)。
具体的样例和差别在以下的链接中可以看到。
http://www.docin.com/p-153910228.html

补充说一句,其实我个人觉得所有编程编程语言,在WINDOWS平台下,调用的都是微软提供的上千个API函数,至于Au3和VC或C++等编程语言。只是把这些原有的WIN API接口,封装的程度不同罢了。AU3简化了很多参数调用的环节,即一个函数能完成很多功能,所以大家觉得它很简单,很实用。同理其他语言也能实现Au3的功能,只是函数调用的层次和级别不一样罢了。
只是个人想法,呵呵。希望对你有所帮助。
发表于 2011-6-26 09:11:32 | 显示全部楼层
回复  happytc


由于自己是从事VC开发,所以很多时候是用AU3调用VC的DLL,或是将VC代码改写成Au3版本使 ...
pengmo 发表于 2011-6-26 08:44


说了这么多,远不如举个例,你怎么用au3来实现

其实还是有点麻烦的,用了GetOpenFileName函数,还得用回调函数GetOpenFileName,还得定义结构
发表于 2011-6-26 17:39:07 | 显示全部楼层
本帖最后由 pengmo 于 2011-7-3 15:48 编辑

回复 10# happytc


朋友 Happytc ,我使用Au3时间不长,这是第一次网论坛里粘贴代码,有不对的地方你多包涵。
我只是实现了,载入文件时弹出不同风格的对话框,不知道是不是你想要的。。。
#include <WinAPI.au3>
#include <GUIConstantsEx.au3>

Opt("GUIOnEventMode", 1)

InitGUI()

While 1
        Sleep(500)
WEnd

; 初始化界面
Func InitGUI()
        Global $GUI_Dlg_Main = GUICreate("文件夹",200,100)
        Global $GUI_Btn_OldStyle = GUICtrlCreateButton("选择文件(旧样式)",50,20) 
        Global $GUI_Btn_NewStyle = GUICtrlCreateButton("选择文件(新样式)",50,50) 

        GUICtrlSetOnEvent ($GUI_Btn_OldStyle, "OnOldStyle")
        GUICtrlSetOnEvent ($GUI_Btn_NewStyle, "OnNewStyle")
        GUISetOnEvent($GUI_EVENT_CLOSE, "OnClose")

        GUISetState(@SW_SHOW)
EndFunc

Func OnClose()
        GUIDelete($GUI_Dlg_Main)
        Exit
EndFunc

; 旧的样式,是VC6.0样式
Func OnOldStyle()
        _WinAPI_GetOpenFileName("选择文件", "文本文件 (*.txt)|Au3 文件 (*.au3)|所有文件 (*.*)", ".", "", _
                "", 2, BitOR($OFN_ALLOWMULTISELECT, $OFN_EXPLORER), $OFN_EX_NOPLACESBAR, $GUI_Dlg_Main)
EndFunc

; 新的样式,是XP默认样式。
Func OnNewStyle()
        FileOpenDialog("选择文件", "", "文本文件 (*.txt)|Au3 文件 (*.au3)|所有文件 (*.*)", 1 + 4 )
EndFunc

评分

参与人数 1金钱 +10 收起 理由
netegg + 10 不错不错

查看全部评分

发表于 2011-6-27 20:31:05 | 显示全部楼层
回复  happytc


朋友 Happytc ,我使用Au3时间不长,这是第一次网论坛里粘贴代码,有不对的地方你多包 ...
pengmo 发表于 2011-6-26 17:39


啊,你仅仅调用我上面说的GetOpenFileName呀,这也是系统标准的。要实现用户自定义,怎么也要调用OFNHookProc 一下嘛。

呵,不是我想要,是楼主想要。不过,应该可以满足楼主想要的了
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-11-15 01:28 , Processed in 0.090160 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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