是否存在一个文件查找的Shell接口?或者其它类型的接口?
就是可以通过这个接口来实现Windows自带的文件查找功能~
指定某个目录~然后更具输入的关键字可以查找文本文件的文件内容和文件标题等内容~然后返回文件的地址和名称等~也就是说Windows自带的查找功能的调用接口~
就是可以通过这个接口来实现Windows自带的文件查找功能~
指定某个目录~然后更具输入的关键字可以查找文本文件的文件内容和文件标题等内容~然后返回文件的地址和名称等~也就是说Windows自带的查找功能的调用接口~
解决方案 »
- VC写的DLL发送wm_copydata消息到VB程序,接收中文字符是乱码。
- vb程序中调用动态出错 急!!!!
- 如何用Winsock控件传送图片文件???
- [MD5算法]求个正确的MD5算法VB版本(32位),可能你一直用了个错的。
- 我的第一个Visual Basic 6.0作品,欢迎大家试用,注册用户得到全部源代码。
- 热烈庆祝我收到单位录取通知。放分!!
- 我用vb写了一个进度条的程序,里面有个逻辑bug!请大家帮个忙解决一下!
- 如何编写一个函数根据指定条件对数据库进行查询?
- 关键字:API & 高分 & 在线等待
- 请作GIS的朋友刘下QQ :) 大家好联系,有问题一同解决。
- 问,如何得到以下网页的网页源代码?
- 求一算法(组合算法):
不行吗?
不过判断一个文件是否存在?可以通过打开该文件试图读取资料的方法实现,如果文件打开
成功,证明该文件存在;反之,文件就不存在。
Function FileExists(fname$) As Boolean
On Error Resume Next ’设置错误处理
Dim X as Integer
X = FreeFile ’取得一个空闲文件句柄
Open fname$ For Input As X ’试图打开该文件
If Err = 0 Then ’如果打开成功
FileExists = True
Else ’否则
FileExists = False
End If
Close X
End Function
'and four text boxes (text1, text2, text3 and text4).
'Type in the first textbox a startingpath like c:'and in the second textbox you put a pattern like *.* or *.txtPrivate Declare Function FindFirstFile Lib "kernel32" Alias "FindFirstFileA" (ByVal lpFileName As String, lpFindFileData As WIN32_FIND_DATA) As Long
Private Declare Function FindNextFile Lib "kernel32" Alias "FindNextFileA" (ByVal hFindFile As Long, lpFindFileData As WIN32_FIND_DATA) As Long
Private Declare Function GetFileAttributes Lib "kernel32" Alias "GetFileAttributesA" (ByVal lpFileName As String) As Long
Private Declare Function FindClose Lib "kernel32" (ByVal hFindFile As Long) As LongConst MAX_PATH = 260
Const MAXDWORD = &HFFFF
Const INVALID_HANDLE_VALUE = -1
Const FILE_ATTRIBUTE_ARCHIVE = &H20
Const FILE_ATTRIBUTE_DIRECTORY = &H10
Const FILE_ATTRIBUTE_HIDDEN = &H2
Const FILE_ATTRIBUTE_NORMAL = &H80
Const FILE_ATTRIBUTE_READONLY = &H1
Const FILE_ATTRIBUTE_SYSTEM = &H4
Const FILE_ATTRIBUTE_TEMPORARY = &H100Private Type FILETIME
dwLowDateTime As Long
dwHighDateTime As Long
End TypePrivate Type WIN32_FIND_DATA
dwFileAttributes As Long
ftCreationTime As FILETIME
ftLastAccessTime As FILETIME
ftLastWriteTime As FILETIME
nFileSizeHigh As Long
nFileSizeLow As Long
dwReserved0 As Long
dwReserved1 As Long
cFileName As String * MAX_PATH
cAlternate As String * 14
End Type
Function StripNulls(OriginalStr As String) As String
If (InStr(OriginalStr, Chr(0)) > 0) Then
OriginalStr = Left(OriginalStr, InStr(OriginalStr, Chr(0)) - 1)
End If
StripNulls = OriginalStr
End FunctionFunction FindFilesAPI(path As String, SearchStr As String, FileCount As Integer, DirCount As Integer)
'KPD-Team 1999
'E-Mail: [email protected] Dim FileName As String ' Walking filename variable...
Dim DirName As String ' SubDirectory Name
Dim dirNames() As String ' Buffer for directory name entries
Dim nDir As Integer ' Number of directories in this path
Dim I As Integer ' For-loop counter...
Dim hSearch As Long ' Search Handle
Dim WFD As WIN32_FIND_DATA
Dim Cont As Integer
If Right(path, 1) <> "\" Then path = path & "\"
' Search for subdirectories.
nDir = 0
ReDim dirNames(nDir)
Cont = True
hSearch = FindFirstFile(path & "*", WFD)
If hSearch <> INVALID_HANDLE_VALUE Then
Do While Cont
DirName = StripNulls(WFD.cFileName)
' Ignore the current and encompassing directories.
If (DirName <> ".") And (DirName <> "..") Then
' Check for directory with bitwise comparison.
If GetFileAttributes(path & DirName) And FILE_ATTRIBUTE_DIRECTORY Then
dirNames(nDir) = DirName
DirCount = DirCount + 1
nDir = nDir + 1
ReDim Preserve dirNames(nDir)
End If
End If
Cont = FindNextFile(hSearch, WFD) 'Get next subdirectory.
Loop
Cont = FindClose(hSearch)
End If
' Walk through this directory and sum file sizes.
hSearch = FindFirstFile(path & SearchStr, WFD)
Cont = True
If hSearch <> INVALID_HANDLE_VALUE Then
While Cont
FileName = StripNulls(WFD.cFileName)
If (FileName <> ".") And (FileName <> "..") Then
FindFilesAPI = FindFilesAPI + (WFD.nFileSizeHigh * MAXDWORD) + WFD.nFileSizeLow
FileCount = FileCount + 1
List1.AddItem path & FileName
End If
Cont = FindNextFile(hSearch, WFD) ' Get next file
Wend
Cont = FindClose(hSearch)
End If
' If there are sub-directories...
If nDir > 0 Then
' Recursively walk into them...
For I = 0 To nDir - 1
FindFilesAPI = FindFilesAPI + FindFilesAPI(path & dirNames(I) & "\", SearchStr, FileCount, DirCount)
Next I
End If
End Function
Sub Command1_Click()
Dim SearchPath As String, FindStr As String
Dim FileSize As Long
Dim NumFiles As Integer, NumDirs As Integer
Screen.MousePointer = vbHourglass
List1.Clear
SearchPath = Text1.Text
FindStr = Text2.Text
FileSize = FindFilesAPI(SearchPath, FindStr, NumFiles, NumDirs)
Text3.Text = NumFiles & " Files found in " & NumDirs + 1 & " Directories"
Text4.Text = "Size of files found under " & SearchPath & " = " & Format(FileSize, "#,###,###,##0") & " Bytes"
Screen.MousePointer = vbDefault
End Sub
Private Declare Function SHFindFiles Lib "Shell32" Alias "#90" (pidlRoot As Long, pidlSavedSearch As Long) As Long
Private Declare Function SHSimpleIDListFromPath Lib "Shell32" Alias "#162" (ByVal lpszPath As String) As Long
Private Declare Function SHFindFiles Lib "Shell32" Alias "#90" (pidlRoot As Long, pidlSavedSearch As Long) As Long
Private Declare Function SHSimpleIDListFromPath Lib "Shell32" Alias "#162" (ByVal lpszPath As String) As Long
====================================
你是怎么找到的?