|
提问: AU3 目录的搜索:
现已加入AU3搜索模块。。 问题是 无论用 FileFindFirstFile FileFindNextFile 还是_FileListToArray 均无法实现
所以逼不得已 才请老大们出来看一下。。
实现功能要求: 用户输入 搜索内容之后。 便开始在读取到的配置文件路径中 进行搜索... 如搜索到相关目录则打开相关目录使用命令($oIE.navigate) 否则给一个Msgbox (无此信息) 只要实现这个就可以了。。
如果以上功能实现后。。 试问一下 如果在目录搜索期间 发现2 个或者更多相同或类似目录后 。最好能弹个表出现贡用户选择。。 例如输入 "AAA" 在搜索期间 发现带有AAA字符的所有目录最后都能列入弹出的表中。。 当用户点击相应的目录名时 则 打开 点击目录所在位置使用命令($oIE.navigate)
高难度问题。。 保证没人提出过。。。
config.ini 配置文件内容如下:
config.ini内容
[测试]
网络游戏=d:
本地游戏=E:
源代码如下:
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <IE.au3>
#include <File.au3>
#include <Array.au3>
#include <StaticConstants.au3>
Opt("GUIOnEventMode", 1);OnEvent模式
$title = "游戏目录搜索"
Global $Button[50][2],$i,$i2,$keys
Local $Total = IniReadSection("config.ini", "测试")
If WinExists($title) Then Exit
AutoItWinSetTitle($title)
_IEErrorHandlerRegister()
$oIE = ObjCreate("Shell.Explorer.2")
$Form1 = GUICreate($title, 900, 525)
GUISetOnEvent($GUI_EVENT_CLOSE, "set")
$Keys_Input = GUICtrlCreateInput("搜索内容", 625, 90, 89, 21)
GUICtrlSetColor(-1, 0x0A7604)
GUICtrlSetOnEvent($Keys_Input, "set")
GUICtrlSetTip(-1, "请输入搜索内容")
$search = GUICtrlCreateButton("开始搜索", 733, 90, 56, 22, 0)
GUICtrlSetOnEvent($search, "set")
$Group1 = GUICtrlCreateGroup("★游戏目录", 8, 112, 81, 385)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$s = 104
$s2 = 0
Dim $but, $job4, $link
For $I = 1 To $Total[0][0]
$s2 = $s + 40
$s = $s2
$Button[$I][0] = GUICtrlCreateButton($Total[$I][0], 16, $s2, 64, 25, 0)
;~ 按钮文字为INI等号左边的值,$Button[$I][0]为按钮控件ID
$Button[$I][1] = $Total[$I][1];
;~ $Button[$I][1] 为INI等号右边的值,即要运行的程序。
GUICtrlSetOnEvent($Button[$I][0], "B_Msg")
GUICtrlSetTip($Button[$I][0], "点击观看→" & $Total[$I][0])
;~ 将按钮点击注册到函数 B_Msg()
Next
$oIE.navigate("c:\")
ControlListView($title, "", "SysListView321", "ViewChange", "smallicons")
$GUIActiveX = GUICtrlCreateObj($oIE, 90, 117, 786, 380)
GUISetState()
While 1
Sleep(100)
WEnd
Func set()
Select
Case @GUI_CtrlId = $search
$keys = GUICtrlRead($Keys_Input)
If $keys <> "" And $keys <> "搜索内容" Then
gosearch()
Else
MsgBox(64, "提示:", "请输入目录名称")
EndIf
Case @GUI_CtrlId = $GUI_EVENT_CLOSE
Exit
EndSelect
EndFunc ;==>set
Func gosearch() ;查找目录 ============== 搜索目录段 就这里搞不定了。。。
$keys2 = "\"&$keys&"*"
;$keys&"*"
For $I = 1 To $Total[0][0]
$FileList = _FileListToArray($Total, $keys2, 2)
MsgBox(64,"PATH",$Total[$i][1]&$keys2)
If @error = 1 Then
MsgBox(0, "", "No Files\Folders Found.")
ElseIf @error = 4 Then
MsgBox(0, "非常抱歉:", "没找到该目录,请于管理员联系!")
Else
msgbox(64,"box",$FileList)
EndIf
;MsgBox(0, "", $FileList)
Next
EndFunc ;==>gosearch
Func B_Msg()
;MsgBox(64,"asdf","TEST")
dim $s3
For $I2 = 1 To UBound($Button, 1) - 1
If @GUI_CtrlId = $Button[$I2][0] Then $oIE.navigate($Button[$I2][1])
Next
;MsgBox(64,"asdf",$s3)
EndFunc ;==>B_Msg
[ 本帖最后由 zhenglei 于 2009-4-8 20:41 编辑 ] |
|