找回密码
 加入
搜索
查看: 10415|回复: 35

[AU3基础] 如何检查GUICtrlCreateInput输入的路径的合法性?

 火.. [复制链接]
发表于 2014-1-29 14:40:10 | 显示全部楼层 |阅读模式
GUICtrlCreateInput输入的路径如何检查合法性?比如,输入“D:bank”,因为缺少“\”,当鼠标(焦点)离开这个输入框,马上提示路径错误。
可以用正则来检测,如果存在半角状态的“\”,则必须有一个半角状态的“:”与其相连,否则必须有一个半角状态的“:”。但是做不到即时检测。
发表于 2014-1-29 15:15:02 | 显示全部楼层
EN_KILLFOCUS
发表于 2014-1-29 15:20:13 | 显示全部楼层
参考这个贴,看看修改下代码,使用正则表达式试一试:

http://www.autoitx.com/thread-5891-1-1.html
发表于 2014-1-29 16:06:22 | 显示全部楼层
发表于 2014-2-5 14:18:27 | 显示全部楼层
FileExists 检查路径是否存在
发表于 2014-2-6 11:00:32 | 显示全部楼层
本帖最后由 netegg 于 2014-2-6 11:01 编辑

这个api可以判断path是否符合unc命名规则
发表于 2014-2-9 13:45:14 | 显示全部楼层
本帖最后由 netegg 于 2014-2-9 15:05 编辑

[au3]Local $a[3]
$a[1] = '路径名不合法'
$a[2]= '路径名合法'
$str = @ScriptFullPath & " >> " & $a[_WinAPI_PathFileExists(@ScriptFullPath)+1] & @CRLF ; File.
$str &= """C:"" >> " & $a[_WinAPI_PathFileExists("""C:""")+1] & @CRLF ; Drive.
$str &= "C: >> " & $a[_WinAPI_PathFileExists("C:")+1] & @CRLF ; Drive.
$str &= @ProgramFilesDir & " >> " & $a[_WinAPI_PathFileExists(@ProgramFilesDir)+1] & @CRLF ; Directory.
$str &= """Z:File.txt"" >> " & $a[_WinAPI_PathFileExists("""Z:File.txt""")+1] & @CRLF ; Shouldn't exist!
$str &= "D:bank >> " & $a[_WinAPI_PathFileExists("D:bank")+1] & @CRLF
$str &= "L: >> " & $a[_WinAPI_PathFileExists("L:")+1] & @CRLF ;全/半角
MsgBox(0, '_WinAPI_PathFileExists', $str)


Func _WinAPI_PathFileExists($sFilePath)
    Local $aReturn = DllCall('shlwapi.dll', 'int', 'PathFileExistsW', 'wstr', $sFilePath)
    If @error Then
        Return SetError(1, 0, 0)
    EndIf
    Return $aReturn[0]
EndFunc   ;==>_WinAPI_PathFileExists
[/au3]
 楼主| 发表于 2014-2-10 16:38:39 | 显示全部楼层
回复 5# 不死帝国

我的是想检测用户在GUICtrlCreateInput中输入的是不是一个路径,如果是合法路径,则才去建立路径。比如用户有可能输入 C::\A\\B,这就不是一个合法的路径的,提示用户修改。
 楼主| 发表于 2014-2-10 16:57:40 | 显示全部楼层
本帖最后由 smooth 于 2014-2-10 16:58 编辑

回复 7# netegg

蛋蛋,我真的佩服你,我要的就是这样的函数。真心感谢!真不知道你从哪里淘到这些函数的?

可否在此请教,怎么能实现实时检测呢?就是用户在GUICtrlCreateInput中输入完毕,就能检测出来,就好像$ES_NUMBER扩展样式一样。
发表于 2014-2-10 17:49:54 | 显示全部楼层
用消息操作,当变换控件的时候检查,不过这个情况很多,看具体的了
发表于 2014-2-10 18:38:19 | 显示全部楼层
$EN_CHANGE,  用于实时检测
$EN_KILLFOCUS,用于焦点解除时
 楼主| 发表于 2014-2-11 18:15:59 | 显示全部楼层
回复 11# netegg
嗯,我晚上试试。蛋蛋,你帮我找的函数,在Windows 8.1下测试不能通过,合法的路径也被认为是非法路径,比如C:\a这种简单的路径。
发表于 2014-2-11 20:18:33 | 显示全部楼层
回复 12# smooth
没有环境,不知道
 楼主| 发表于 2014-2-11 23:27:46 | 显示全部楼层
回复 13# netegg
可以弄个虚拟机装个WIN8.1试试。
发表于 2014-2-11 23:39:29 | 显示全部楼层
netegg 发表于 2014-2-9 13:45



    蛋蛋迷糊了… 这个不是验证合法性的
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-5-20 07:14 , Processed in 0.083939 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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