| |
VB.NET - FortgeschritteneRe: Durchsuchen aller Laufwerke nach bestimmten Dateien | | | Autor: Manfred X | Datum: 17.05.20 16:21 |
| Für solche Zwecke kann man z.B. die Windows-API verwenden:
(Windows.Forms-Formular)
Imports System
Imports System.IO
Imports System.Runtime
Imports System.Runtime.InteropServices
Public Class frmEnumerateFiles
'Code übernommen und leicht modifiziert von ....
'https://www.vbarchiv.net/forum/read.php?f=10&t=59926&i=59957
Private Declare Auto Function FindFirstFile Lib "kernel32.dll" (ByVal _
lpFileName As String, ByRef lpFindData As WIN32_FIND_DATA) As IntPtr
Private Declare Auto Function FindNextFile Lib "kernel32.dll" (ByVal _
hFindFile As IntPtr, ByRef lpFindData As WIN32_FIND_DATA) As IntPtr
Private Declare Function FindClose Lib "kernel32.dll" (ByVal hFindFile As _
IntPtr) As Boolean
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Auto)>
Private Structure WIN32_FIND_DATA
Public sfileAttributes As Int32
Public creationTime_lowDateTime As Int32
Public creationTime_highDateTime As Int32
Public lastAccessTime_lowDateTime As Int32
Public lastAccessTime_highDateTime As Int32
Public lastWriteTime_lowDateTime As Int32
Public lastWriteTime_highDateTime As Int32
Public nFileSizeHigh As Int32
Public nFileSizeLow As Int32
Public dwReserved0 As Int32
Public dwReserved1 As Int32
<MarshalAs(UnmanagedType.ByValTStr, SizeConst:=MAX_PATH)>
Public fileName As String
<MarshalAs(UnmanagedType.ByValTStr, SizeConst:=14)>
Public alternateFileName As String
End Structure
Private Const MAX_PATH As Integer = 260
Private Const INVALID_HANDLE_VALUE As Integer = -1
Private Const FILE_ATTRIBUTE_DIRECTORY As Integer = &H10
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As _
System.EventArgs) Handles MyBase.Load
Dim files As New List(Of String)
FindAllFiles("C:\users", "*.pdf", files)
Stop
End Sub
Private Sub FindAllFiles (ByVal folder As String, ByVal pattern As String,
ByRef files As List(Of String))
Dim w32data As New WIN32_FIND_DATA
Dim Handle As System.IntPtr = FindFirstFile(Path.Combine(folder, _
"*.*"), w32data)
If Handle <> CType(INVALID_HANDLE_VALUE, System.IntPtr) Then
Dim Search As Boolean = True
Do
'Handelt es sich um ein Verzeichnis?
If (w32data.sfileAttributes And FILE_ATTRIBUTE_DIRECTORY) =
FILE_ATTRIBUTE_DIRECTORY Then
'Verzeichnisnamen ermitteln und für den späteren rekursiven
' Aufruf speichern
If w32data.fileName <> "." And w32data.fileName <> ".." Then
FindAllFiles(Path.Combine(folder, w32data.fileName),
pattern, files)
End If
Else
'es ist eine datei
If w32data.fileName Like pattern Then
files.Add(Path.Combine(folder, w32data.fileName))
End If
End If
Loop Until FindNextFile(Handle, w32data) = CType(False, _
System.IntPtr)
'handle schliessen
FindClose(Handle)
End If
End Sub
End Class | |
| Sie sind nicht angemeldet! Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
|
|
Neu! sevEingabe 3.0
Einfach stark!
Ein einziges Eingabe-Control für alle benötigten Eingabetypen und -formate, inkl. Kalender-, Taschenrechner und Floskelfunktion, mehrspaltige ComboBox mit DB-Anbindung, ImageComboBox u.v.m. Weitere InfosTipp des Monats Access-Tools Vol.1
Über 400 MByte Inhalt
Mehr als 250 Access-Beispiele, 25 Add-Ins und ActiveX-Komponenten, 16 VB-Projekt inkl. Source, mehr als 320 Tipps & Tricks für Access und VB
Nur 24,95 EURWeitere Infos
|
|
|
Copyright ©2000-2024 vb@rchiv Dieter Otter Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.
Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel
|
|