



'На форме List1
Private 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 FindClose Lib "kernel32" (ByVal hFindFile As Long) As Long
Private Type FILETIME
dwLowDateTime As Long
dwHighDateTime As Long
End Type
Const MAX_PATH = 260
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
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 EnumDirs(path As String, Optional level As Long = 0)
Dim sName As String, sSpace As String
Dim hSearch As Long, bIsDirectory As Boolean
Dim Cont As Integer
On Error GoTo exitfromhere
If Right(path, 1) <> "\" Then path = path & "\"
sSpace = String(level, ".")
Dim WFD As WIN32_FIND_DATA
Cont = True
hSearch = FindFirstFile(path & "*", WFD)
If hSearch <> -1 Then
Do While Cont
sName = StripNulls(WFD.cFileName)
If sName <> "." And sName <> ".." Then
bIsDirectory = (GetAttr(path & sName) And vbDirectory) = vbDirectory
List1.AddItem (sSpace & IIf(bIsDirectory, "[" & sName & "]", sName))
If bIsDirectory Then EnumDirs path & sName, level + 1
End If
Cont = FindNextFile(hSearch, WFD)
Loop
End If
Cont = FindClose(hSearch)
exitfromhere:
End Function
Так бы и сразу сказал, а то сначала пришлось разделение и уровни делать.Dex писал(а):Ну типа да!?
'На форме List1
Private Declare Function GetFileAttributes Lib "kernel32" Alias "GetFileAttributesA" (ByVal lpFileName As String) As Long
Const FILE_ATTRIBUTE_DIRECTORY = &H10
Private 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 FindClose Lib "kernel32" (ByVal hFindFile As Long) As Long
Private Type FILETIME
dwLowDateTime As Long
dwHighDateTime As Long
End Type
Const MAX_PATH = 260
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
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 EnumDirs(path As String)
Dim sName As String, sSpace As String
Dim hSearch As Long, bIsDirectory As Boolean
Dim Cont As Integer
On Error GoTo exitfromhere
If Right(path, 1) <> "" Then path = path & ""
Dim WFD As WIN32_FIND_DATA
Cont = True
hSearch = FindFirstFile(path & "*", WFD)
If hSearch <> -1 Then
Do While Cont
sName = StripNulls(WFD.cFileName)
If sName <> "." And sName <> ".." Then
If GetFileAttributes(path & sName) And FILE_ATTRIBUTE_DIRECTORY Then
List1.AddItem (path & sName)
EnumDirs path & sName
End If
End If
Cont = FindNextFile(hSearch, WFD)
Loop
End If
Cont = FindClose(hSearch)
exitfromhere:
End Function
Dex писал(а):А как узнать существуют ли в указанной папки с указанным расширением и опять запихнуть ети файлы в ListBox
Const SHERB_NOCONFIRMATION = &H1
Const SHERB_NOPROGRESSUI = &H2
Const SHERB_NOSOUND = &H4
Private Type ULARGE_INTEGER
LowPart As Long
HighPart As Long
End Type
Private Type SHQUERYRBINFO
cbSize As Long
i64Size As ULARGE_INTEGER
i64NumItems As ULARGE_INTEGER
End Type
Private Declare Function SHEmptyRecycleBin Lib "shell32.dll" Alias "SHEmptyRecycleBinA" (ByVal hwnd As Long, ByVal pszRootPath As String, ByVal dwFlags As Long) As Long
Private Declare Function SHUpdateRecycleBinIcon Lib "shell32.dll" () As Long
Private Declare Function SHQueryRecycleBin Lib "shell32.dll" Alias "SHQueryRecycleBinA" (ByVal pszRootPath As String, pSHQueryRBInfo As SHQUERYRBINFO) As Long
Private Sub Form_Load()
'KPD-Team 2000
'URL: http://www.allapi.net/
'E-Mail: KPDTeam@Allapi.net
Dim RBinInfo As SHQUERYRBINFO, Msg As VbMsgBoxResult
RBinInfo.cbSize = Len(RBinInfo)
SHQueryRecycleBin vbNullString, RBinInfo
If (RBinInfo.i64Size.LowPart And &H80000000) = &H80000000 Or RBinInfo.i64Size.HighPart > 0 Then
Msg = MsgBox("Your Recycle Bin consumes over 2 gigabytes right now!" + vbCrLf + "Do you want to empty it?", vbYesNo + vbQuestion)
Else
Msg = MsgBox("Your Recycle Bin consumes" + Str$(RBinInfo.i64Size.LowPart) + " bytes right now." + vbCrLf + "Do you want to empty it?", vbYesNo + vbQuestion)
End If
If Msg = vbYes Then
SHEmptyRecycleBin Me.hwnd, vbNullString, 0
SHUpdateRecycleBinIcon
End If
End Sub
Dim I&
For I = 0 To List1.ListCount - 1
If List1.Selected(I) = True Then List1.RemoveItem I
Next
Dim I&
For I = List1.ListCount - 1 To 0 Step -1
If List1.Selected(I) = True Then List1.RemoveItem I
Next
FSO.DeleteFile "C:\Windows\Рабочий стол\~File.fle", True
FSO.DeleteFile "C:\Windows\Рабочий стол\~File.fle", True
Kill "C:\Windows\Рабочий стол\~File.fle"
Сейчас этот форум просматривают: Yandex-бот и гости: 16