当前位置:首页
开发技术指南» 文章正文
    引言:

 ·求createprocessa的详细说明    »显示摘要«
    摘要: 求createprocessa的详细说明及示例,谢谢 ......
    摘要: markandnos = "abc" & vbcrlf & vbcrlf & "def" & vbcrlf & vbcrlf & "ghj" 现在在textarea里显示的是: abc def ghj 我想显示的是: abc def ghj --- 请问有办法不?谢谢. ......


如何全盘搜索

请问一下,如何使用API进行全盘文件搜索,包括隐藏、系统等文件,可以支持*、?等模糊搜索,谢谢!

NO.1   作者: SoftProj

我有代码,支持*,但没试过?。  
  代码太长,无法帖出。  
  需要联系  
  QQ:397755253  
  附加信息:文件搜索。

NO.2   作者: ExeMan

http://cdwnet.91x.net/findfile.rar

NO.3   作者: caozhy

Option   Explicit  
   
  查找第一个文件的API  
  Private   Declare   Function   FindFirstFile   Lib   "kernel32"   Alias   "FindFirstFileA"   (ByVal   lpFileName   As   String,   lpFindFileData   As   WIN32_FIND_DATA)   As   Long  
  查找下一个文件的API  
  Private   Declare   Function   FindNextFile   Lib   "kernel32"   Alias   "FindNextFileA"   (ByVal   hFindFile   As   Long,   lpFindFileData   As   WIN32_FIND_DATA)   As   Long  
  获取文件属性的API  
  Private   Declare   Function   GetFileAttributes   Lib   "kernel32"   Alias   "GetFileAttributesA"   (ByVal   lpFileName   As   String)   As   Long  
  关闭查找文件的API  
  Private   Declare   Function   FindClose   Lib   "kernel32"   (ByVal   hFindFile   As   Long)   As   Long  
  以下为调用浏览文件夹窗口的API  
  Private   Declare   Sub   CoTaskMemFree   Lib   "ole32.dll"   (ByVal   hMem   As   Long)  
  Private   Declare   Function   lstrcat   Lib   "kernel32"   Alias   "lstrcatA"   (ByVal   lpString1   As   String,   ByVal   lpString2   As   String)   As   Long  
  Private   Declare   Function   SHBrowseForFolder   Lib   "shell32"   (lpbi   As   BrowseInfo)   As   Long  
  Private   Declare   Function   SHGetPathFromIDList   Lib   "shell32"   (ByVal   pidList   As   Long,   ByVal   lpBuffer   As   String)   As   Long  
   
  常量  
  Const   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   =   &H100  
  Const   BIF_RETURNONLYFSDIRS   =   1  
  Private   Type   FILETIME  
  dwLowDateTime   As   Long  
  dwHighDateTime   As   Long  
  End   Type  
   
  定义类(用于查找文件)  
  Private   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  
   
  定义类(用于浏览文件夹窗口)  
  Private   Type   BrowseInfo  
  hWndOwner   As   Long  
  pIDLRoot   As   Long  
  pszDisplayName   As   Long  
  lpszTitle   As   Long  
  ulFlags   As   Long  
  lpfnCallback   As   Long  
  lParam   As   Long  
  iImage   As   Long  
  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   Function  
   
  自定义函数  
  Function   FindFilesAPI(path   As   String,   SearchStr   As   String,   FileCount   As   Integer,   _  
  DirCount   As   Integer)  
  Dim   FileName   As   String     文件名  
  Dim   DirName   As   String     子目录名  
  Dim   dirNames()   As   String     目录数组  
  Dim   nDir   As   Integer     当前路径的目录数  
  Dim   i   As   Integer     循环计数器变量  
  Dim   hSearch   As   Long     搜索句柄变量  
  Dim   WFD   As   WIN32_FIND_DATA  
  Dim   Cont   As   Integer  
  If   Right(path,   1)   <>   "\"   Then   path   =   path   &   "\"  
  搜索子目录  
  nDir   =   0  
  ReDim   dirNames(nDir)  
  Cont   =   True  
  hSearch   =   FindFirstFile(path   &   "*",   WFD)  
  If   hSearch   <>   INVALID_HANDLE_VALUE   Then  
  Do   While   Cont  
  DirName   =   StripNulls(WFD.cFileName)  
  If   (DirName   <>   ".")   And   (DirName   <>   "..")   Then  
  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)   获取下一个子目录  
  Loop  
  Cont   =   FindClose(hSearch)  
  End   If  
    遍历目录并累计文件总数  
  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)     获取下一个文件  
  Wend  
  Cont   =   FindClose(hSearch)  
  End   If  
  如果子目录存在则遍历之  
  If   nDir   >   0   Then  
  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  
  Dim   iNull   As   Integer,   lpIDList   As   Long,   lResult   As   Long  
  Dim   sPath   As   String,   udtBI   As   BrowseInfo  
  With   udtBI  
  设置浏览窗口  
  .hWndOwner   =   Me.hWnd  
  返回选中的目录  
  .ulFlags   =   BIF_RETURNONLYFSDIRS  
  End   With  
   
  调出浏览窗口  
  lpIDList   =   SHBrowseForFolder(udtBI)  
  If   lpIDList   Then  
  sPath   =   String$(MAX_PATH,   0)  
  获取路径  
  SHGetPathFromIDList   lpIDList,   sPath  
  释放内存  
  CoTaskMemFree   lpIDList  
  iNull   =   InStr(sPath,   vbNullChar)  
  If   iNull   Then  
  sPath   =   Left$(sPath,   iNull   -   1)  
  End   If  
  End   If  
   
  Screen.MousePointer   =   vbHourglass  
  List1.Clear  
  SearchPath   =   sPath   选中的目录为搜索的起始路径  
  FindStr   =   "*.*"   搜索所有类型的文件(此处可另作定义)  
  FileSize   =   FindFilesAPI(SearchPath,   FindStr,   NumFiles,   NumDirs)  
  Text1.Text   =   "查找到的文件数:"   &   NumFiles   &   vbCrLf   &   "查找的目录数:"   &   _  
  NumDirs   +   1   &   vbCrLf   &   "文件大小总共为:"   &   vbCrLf   &   _  
  Format(FileSize,   "#,###,###,##0")   &   "字节"  
  Screen.MousePointer   =   vbDefault  
  End   Sub

NO.4   作者: maweifeng

这个纯VB实现,个人一直用:  
   
  Sub   FindFile(cPath   As   String)  
           
  On   Error   Resume   Next  
           
          If   bStop   Then  
                  Exit   Sub  
          End   If  
           
          Dim   s   As   String,   sDir()   As   String  
          Dim   I   As   Long,   d   As   Long  
           
          Me.lblInfo   =   "正在查找:   "   &   cPath  
          DoEvents  
           
          查找目录下的文件  
          If   Right(cPath,   1)   <>   "\"   Then  
                  cPath   =   cPath   &   "\"  
          End   If  
          s   =   Dir(cPath   &   strSearchFile,   vbArchive   Or   _  
                          vbNormal   Or   vbReadOnly   Or   vbHidden   Or   _  
                          vbSystem   Or   vbDirectory)  
   
          Do   While   s   <>   ""  
                  lstFileList.AddItem   cPath   &   s  
                  s   =   Dir()  
          Loop  
           
          查找目录下的子目录  
          s   =   Dir(cPath,   vbArchive   Or   _  
                          vbNormal   Or   vbReadOnly   Or   vbHidden   Or   _  
                          vbSystem   Or   vbDirectory)  
           
          Do   While   s   <>   ""  
                  If   s   <>   "."   And   s   <>   ".."   Then  
                          If   (GetAttr(cPath   &   s)   And   vbDirectory)   =   vbDirectory   Then  
                                  d   =   d   +   1  
                                  ReDim   Preserve   sDir(d)  
                                  sDir(d)   =   cPath   &   s  
                          End   If  
                  End   If  
                  s   =   Dir()  
          Loop  
           
          开始递归  
          For   I   =   1   To   d  
                  FindFile   sDir(I)   &   "\"  
          Next  
       
  End   Sub


    摘要: 我用的是tomcat5.5,jsp里使用了smartupload组件,在点击上传文件的时候出现提示“无法显示网页 由于地址不正确,无法显示您要查看的网页。http 405 - 资源不允许”。 请问这个问题应该怎么处理? ......
» 本期热门文章:

©2000-2007 All Rights Reserved. 最佳浏览:1024X768 MSIE