vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Mails senden, abrufen und decodieren - ganz easy ;-)  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   RSS-Feeds  | Newsletter  | Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2018
 
zurück
Rubrik: Dateisystem · Ordner & Verzeichnisse   |   VB-Versionen: VB4, VB5, VB623.08.02
Datei in vorgegebenen Systempfaden suchen

Mit der WinAPI SearchPath ein Kinderspiel - das Durchsuchen der Systempfade nach einer bestimmten Datei.

Autor:   Dieter OtterBewertung:     [ Jetzt bewerten ]Views:  24.183 
www.tools4vb.deSystem:  Win9x, WinNT, Win2k, WinXP, Vista, Win7, Win8, Win10 Beispielprojekt auf CD 

Sie möchten wissen, in welchem Verzeichnis sich NOTEPAD.EXE befindet? Oder der Windows-Explorer? Oder die Visual Basic Laufzeitdatei MSVBVM60.DLL?

Oder: Sie möchten einfach alle in der Umgebungsvariable PATH festgelegten Ordner nach einer bestimmten Datei durchsuchen.

Das alles ist mit der API-Funktion SearchPath ein Kinderspiel.

' Deklaration
Private Declare Function SearchPath Lib "kernel32" _
  Alias "SearchPathA" ( _
  ByVal lpPath As String, _
  ByVal lpFileName As String, _
  ByVal lpExtension As String, _
  ByVal nBufferLength As Long, _
  ByVal lpBuffer As String, _
  ByVal lpFilePart As String) As Long

Erläuterung:
Die SearchPath-Funktion durchsucht das in "lpPath" angegebene Verzeichnis nach einer bestimmten Datei. Wird für "lpPath" jedoch ein Nullstring angegeben, werden folgende Verzeichnisse durchsucht:

  1. das Anwendungsverzeichnis, in dem sich die Anwendung befindet (App.Path)
  2. das aktuelle Verzeichnis (CurDir)
  3. das Windows/Systemverzeichnis (SYSTEM bzw. SYSTEM32 unter NT/2k/XP)
  4. unter WinNT/2k/XP: zusätzlich das 16-Bit SYSTEM-Verzeichnis
  5. das Windowsverzeichnis
  6. alle Verzeichnisse aus der Umgebungsvariable PATH

Welche Pfade die Umgebungsvariable enthält, kann man über folgende Anweisung ermitteln:

MsgBox Environ("PATH")

Um nun z.B. zu ermitteln, in welchem Verzeichnis sich die MSVBVM60.DLL befindet, einfach folgenden Aufruf verwenden:

Dim sFile As String
DIM nResult As Long
Dim sBuffer As String
 
' Datei, nach der gesucht werden soll
sFile = "MSVBVM60.DLL"
 
' Buffer für die Rückgabe des Verzeichnisses
Const MAX_PATH = 260
sBuffer = Space$(MAX_PATH)
 
' Suchvorgang starten...
nResult = SearchPath(vbNullString, sFile, "", Len(sBuffer), _
  sBuffer, vbNullString)
 
If nResult > 0 Then
  ' Datei gefunden
  MsgBox "Pfad: " & Left$(sBuffer, nResult)
Else
  MsgBox "Datei nicht gefunden!"
End If

Dieser Tipp wurde bereits 24.183 mal aufgerufen.

Voriger Tipp   |   Zufälliger Tipp   |   Nächster Tipp

Über diesen Tipp im Forum diskutieren
Haben Sie Fragen oder Anregungen zu diesem Tipp, können Sie gerne mit anderen darüber in unserem Forum diskutieren.

Aktuelle Diskussion anzeigen (3 Beiträge)

nach obenzurück


Anzeige

Kauftipp Unser Dauerbrenner!Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv  Vol.6
(einschl. Beispielprojekt!)

Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv!
- nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten
- Symbol-Galerie mit mehr als 3.200 Icons im modernen Look
Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m.
 
   

Druckansicht Druckansicht Copyright ©2000-2018 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