| |

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! sevCommand 4.0 
Professionelle Schaltflächen im modernen Design!
Mit nur wenigen Mausklicks statten auch Sie Ihre Anwendungen ab sofort mit grafischen Schaltflächen im modernen Look & Feel aus (WinXP, Office, Vista oder auch Windows 8), inkl. große Symbolbibliothek. Weitere InfosTipp des Monats Oktober 2025 Matthias KozlowskiUmlaute konvertierenErsetzt die Umlaute in einer Zeichenkette durch die entsprechenden Doppelbuchstaben (aus ä wird ae, usw.) 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-2025 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
|
|