Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: dirlistbox отобразить скрытые папки? Добавлено: 03.02.10 17:34  

Автор вопроса:  pavel
Подскажите как в dirlistbox отобразить скрытые системные папки?

Ответить

  Ответы Всего ответов: 8  

Номер ответа: 1
Автор ответа:
 ηikolaŠ~rus



ICQ: 604058327 

Вопросов: 50
Ответов: 287
 Профиль | | #1 Добавлено: 05.02.10 20:06
тебе надо именно через дирлиствокс?

Ответить

Номер ответа: 2
Автор ответа:
 pavel



Вопросов: 3
Ответов: 13
 Профиль | | #2 Добавлено: 05.02.10 20:43
именно!!! чет искал в инете ни где не пишут.

Ответить

Номер ответа: 3
Автор ответа:
 ηikolaŠ~rus



ICQ: 604058327 

Вопросов: 50
Ответов: 287
 Профиль | | #3 Добавлено: 05.02.10 21:29
не знаю как это в дире делается а если че то просто атрибуты файла поменяй

Ответить

Номер ответа: 4
Автор ответа:
 s12



Вопросов: 24
Ответов: 363
 Профиль | | #4 Добавлено: 05.02.10 23:09
dirlistbox отображает то-же что и эсплорер. Вообще-то обыкновенно используют API для таких вещей...

Ответить

Номер ответа: 5
Автор ответа:
 pavel



Вопросов: 3
Ответов: 13
 Профиль | | #5 Добавлено: 06.02.10 02:48
а код API можешь скинуть?

Ответить

Номер ответа: 6
Автор ответа:
 Winand



Вопросов: 87
Ответов: 2795
 Web-сайт: winandfx.narod.ru
 Профиль | | #6
Добавлено: 06.02.10 19:22
Вот код моего урезанного класса io.cls:
  1. '    Copyright 2009, 2010 Makarov Andrey
  2. '
  3. '    This file is part of Audica - Open Simple Audio Player.
  4. '
  5. '    Audica is free software: you can redistribute it and/or modify
  6. '    it under the terms of the GNU General Public License as published by
  7. '    the Free Software Foundation, either version 3 of the License, or
  8. '    (at your option) any later version.
  9. '
  10. '    Audica is distributed in the hope that it will be useful,
  11. '    but WITHOUT ANY WARRANTY; without even the implied warranty of
  12. '    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  13. '    GNU General Public License for more details.
  14. '
  15. '    You should have received a copy of the GNU General Public License
  16. '    along with Audica.  If not, see <http://www.gnu.org/licenses/>.
  17.  
  18. Option Explicit
  19. Private Const MAX_PATH As Long = 4000 '32767 '260
  20. Private Const MAX_PATH_B As Long = MAX_PATH * 2
  21. Private Const MAX_ALTERNATE As Long = 14
  22. Private Const INVALID_HANDLE_VALUE As Long = -1
  23.  
  24. Private Type FILETIME
  25.     dwLowDateTime As Long
  26.     dwHighDateTime As Long
  27. End Type
  28.  
  29. Private Type WIN32_FIND_DATA
  30.     dwFileAttributes As Long
  31.     ftCreationTime As FILETIME
  32.     ftLastAccessTime As FILETIME
  33.     ftLastWriteTime As FILETIME
  34.     nFileSizeHigh As Long
  35.     nFileSizeLow As Long
  36.     dwReserved0 As Long
  37.     dwReserved1 As Long
  38. '    cFileName As String * MAX_PATH
  39.     cFileName(MAX_PATH_B) As Byte
  40.     cAlternate As String * MAX_ALTERNATE
  41. End Type
  42.  
  43. Private Declare Function FindFirstFile Lib "kernel32.dll" Alias "FindFirstFileW" (ByVal lpFileName As Long, ByRef lpFindFileData As WIN32_FIND_DATA) As Long
  44. Private Declare Function FindNextFile Lib "kernel32.dll" Alias "FindNextFileW" (ByVal hFindFile As Long, ByRef lpFindFileData As WIN32_FIND_DATA) As Long
  45. Private Declare Function FindClose Lib "kernel32.dll" (ByVal hFindFile As Long) As Long
  46. Private Declare Function PathCombine_ Lib "shlwapi.dll" Alias "PathCombineW" (ByVal szDest As Long, ByVal lpszDir As Long, ByVal lpszFile As Long) As Long
  47.  
  48. Public filesResult As Collection
  49. Public foldersResult As Collection
  50.  
  51. Private rxObj As New RegExp
  52. Private rxMatchCol As MatchCollection
  53.  
  54. Public Sub fflush()
  55.     Set filesResult = New Collection
  56.     Set foldersResult = New Collection
  57. End Sub
  58.  
  59. Public Sub enumFiles(ByVal path As String, Optional ByVal fFilter As String = vbNullString)
  60.     Call fflush
  61.     Call searchFilesRecursive(path, fFilter)
  62. End Sub
  63.  
  64. 'Enum files in /path/ and it's subfolders
  65. 'CAUTION: Changes Form1.Caption to show progress
  66. Public Sub enumFilesRecursive(ByRef path As String, Optional ByRef fFilter As String = vbNullString)
  67.     Dim i As Integer, postfix As String, foldername As String
  68.     foldername = PathFilename(path)
  69.     If LenB(foldername) = 0 Then foldername = path
  70.     postfix = " subfolder of """ & foldername & """"
  71.     Call fflush
  72.     Call searchFilesRecursive(path, fFilter)
  73.     Do
  74.         i = i + 1
  75.         If i <= foldersResult.Count Then
  76.             If i Mod 10 = 0 Then
  77.                 Form1.Caption = "Search in " & i & postfix
  78.                 DoPaintEvents
  79.             End If
  80.             Call searchFilesRecursive(foldersResult(i), fFilter)
  81.         Else
  82.             Exit Do
  83.         End If
  84.     Loop
  85. End Sub
  86.  
  87. Private Sub searchFilesRecursive(ByRef directoryPath As String, ByRef fFilter As String)
  88.     Dim locationName As String, l As Long
  89.     Dim findData As WIN32_FIND_DATA
  90.     Dim hFindFile As Long
  91.     hFindFile = FindFirstFile(StrPtr("\\?\" & directoryPath & "\*"), findData)
  92.     If (hFindFile <> INVALID_HANDLE_VALUE) Then
  93.         Do
  94.             l = InStr(1, findData.cFileName, vbNullChar)
  95.             If l = 0 Then l = MAX_PATH + 1
  96.             locationName = Left$(findData.cFileName, l - 1)
  97.             If (locationName <> "." And locationName <> "..") Then
  98.                 If ((findData.dwFileAttributes And vbDirectory) <> 0) Then
  99.                     Call foldersResult.Add(PathCombine(directoryPath, locationName))
  100.                 ElseIf fFilter = vbNullString Then
  101.                     Call filesResult.Add(PathCombine(directoryPath, locationName))
  102.                 ElseIf checkRegExpMask(locationName, fFilter, vbTextCompare) Then
  103.                     Call filesResult.Add(PathCombine(directoryPath, locationName))
  104.                 End If
  105.             End If
  106.         Loop While (FindNextFile(hFindFile, findData))
  107.     End If
  108.     Call FindClose(hFindFile)
  109. End Sub
  110.  
  111. Private Function PathCombine(ByVal directoryPath As String, ByVal directoryName As String) As String
  112.     Dim l As Long
  113.     PathCombine = String$(MAX_PATH, vbNullChar)
  114.     Call PathCombine_(StrPtr(PathCombine), StrPtr(directoryPath), StrPtr(directoryName))
  115.     l = InStr(1, PathCombine, vbNullChar)
  116.     If l = 0 Then l = MAX_PATH + 1
  117.     PathCombine = Left$(PathCombine, l - 1)
  118. End Function
  119.  
  120. Public Function checkRegExpMask(ByRef strText As String, ByRef strSearch As String, Optional ByVal CompareMode As VbCompareMethod) As Boolean
  121. On Error GoTo 1:
  122.     rxObj.IgnoreCase = (CompareMode = vbTextCompare)
  123.     rxObj.Global = True
  124.     rxObj.MultiLine = True
  125.     rxObj.Pattern = strSearch
  126. '    checkRegExpMask = rxObj.Execute(strText).count > 0
  127.     Set rxMatchCol = rxObj.Execute(strText)
  128.     If rxMatchCol.Count = 1 Then _
  129.         If strText = rxMatchCol(0).Value Then _
  130.             checkRegExpMask = True
  131. Exit Function
  132. 1: Debug.Print "ERROR in checkRegExpMask", Now
  133. End Function
Нужно подключить в референсес Microsoft VBScript RegExp

  1.     Dim io As New io, i As Long, Count As Long
  2.     io.enumFiles "C:\", ".*\..*"
  3.     Count = io.filesResult.Count
  4.     For i = 1 To Count
  5.         List1.AddItem io.filesResult(i)
  6.     Next i
Что интересно файлы bootmgr и ntldr не находятся) Видимо защита

Ответить

Номер ответа: 7
Автор ответа:
 Winand



Вопросов: 87
Ответов: 2795
 Web-сайт: winandfx.narod.ru
 Профиль | | #7
Добавлено: 06.02.10 19:26
Ах да. При рекурсивном поиске надо убрать If i Mod 10 = 0 Then ... End If

Ответить

Номер ответа: 8
Автор ответа:
 pavel



Вопросов: 3
Ответов: 13
 Профиль | | #8 Добавлено: 07.02.10 00:43
спасибо!

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам