vb-Zentrum
Dateisystem
http://www.vb-zentrum.de/tip_datei.html

© 2010 vb-Zentrum

0006 Dateipfad setzen / ermitteln (auch für Netzwerk)

 

Um den aktuelle Pfad (und das Laufwerk) im Programm zu setzten gibt es in VB die Funktionen ChDrive und ChDir. Diese beschränken sich aber auf lokale Laufwerke!
Flexibler sind die der API-Funktionen SetCurrentDirectory und GetCurrentDirectory , die nicht nur Laufwerk und Pfad gleichzeitig setzen, sondern auch auf UNC-Pfade reagieren (z.B.: \\Servername\Projekte\).

' Deklaration
Private Declare Function SetCurrentDirectory Lib "kernel32" Alias _
        "SetCurrentDirectoryA" (ByVal lpPathName As String) As Long
Private Declare Function GetCurrentDirectory Lib "kernel32" Alias "GetCurrentDirectoryA" _
        (ByVal nBufferLength As Long, ByVal lpBuffer As String) As Long


' Setzt das Current Directory auch im Netzwerk
Public Function setCurrentDir(ByVal path As String) As Boolean
  setCurrentDir = CBool(SetCurrentDirectory(path))
End Function

' Ermittelt das aktuelle Laufwerk (incl. Pfad)
Public Function getCurrentDir() As String
  Dim ln As Long
  Dim sBuf As String
  
  sBuf = String$(512, 0)
  ln = GetCurrentDirectory(Len(sBuf), sBuf)
  If ln Then getCurrentDir = Left(sBuf, ln)
End Function

Autor: ralf schlegel
Stand: 01/2010

0005 BrowseForFolder (Verzeichnisauswahl-Dialog)

Die windowsinterne API-Routine zur Verzeichnisauswahl lässt sich unter Visual Basic nicht so ohne Weiteres nutzen. Es gibt im Netz einige Beispiele, wie man so etwas dennoch bewerkstelligen kann. Die hier zum Download bereitgestellte Variante von Marco Wünschmann kann jedoch noch einiges mehr! Für uns: Best Code 2004 - Gratulation Marco!

   0005_BrowseForFolder.zip

Autor: marco wünschmann
EMail: siehe Quellcode
Stand: 01/2004

0004 Windows Papierkorb verwenden

Statt mit der Basic-Anweisung "Kill" eine Datei entgültig ins Nirvana zu schicken, ist es wesentlich eleganter diese nach Explorermanier in den Papierkorb zu verschieben! Dazu benötigt man die API-Funktion SHFileOperation . Diese Funktion bietet gleich mehrere Vorteile: zum einen kann sie mehrere Datein und Verzeichnisse auf einmal löschen, zum anderen ist sie auch in der Lage eine oder mehrere Datein zu kopieren, verschieben oder umzubenennen. Den vollen Funktionsumfang, sowie eine Beschreibung aller möglichen Flags finden Sie in der Tipp-Rubrik API, hier gehen wir nur auf das Löschen ein...

' Deklaration:
Declare Function SHFileOperation Lib "Shell32.dll" Alias "SHFileOperationA" _
(lpFileOp As SHFILEOPSTRUCT) As Long
Private Type
SHFILEOPSTRUCT hwnd As Long wFunc As Long pFrom As String pTo As String fFlags As Integer fAborted As Long hNameMaps As Long sProgress As String End Type



Const
FO_DELETE = &H3
Const FOF_MULTIDESTFILES = &H1 Const FOF_ALLOWUNDO = &H40 ' Funktion: ' Löscht alle an 'fname' übergebenen Dateien, bei Übergabe mehrerer ' Dateien in 'fname' müssen diese zuvor durch Chr(0) getrennt werden! ' Ist 'undo' = True, werden die Dateien in den Papierkorb verschoben! Public Sub file_delete(ByVal hwnd As Long, ByVal fname As String, _
Optional undo As Boolean = False) Dim ShellInfo As SHFILEOPSTRUCT If Trim(fname) = "" Then Exit Sub DoEvents With ShellInfo .hwnd = hwnd .wFunc = FO_DELETE .pFrom = fname & Chr(0) & Chr(0) .pTo = "" & Chr(0) .fFlags = FOF_MULTIDESTFILES If undo Then .fFlags = .fFlags Or FOF_ALLOWUNDO End With SHFileOperation ShellInfo End Sub
Autor: ralf schlegel
Stand: 12/2004

0003 Special Folders

Um Dateien dynamisch aus den Anwenderverzeichnissen zu laden und wieder abzuspeichern ist es notwendig die Lage dieser Ordner zu ermitteln, denn "Eigene Dateien", "Eigene Bilder" , etc. können vom Benutzer an beliebigen Stellen eingerichtet worden sein. Wie man die Vielzahl der Ordner abfragt und vernünftig verwaltet erfahren Sie in diesem Demoprojekt...

   0003_Special_Folder.zip

Autor: ralf schlegel
Stand: 11/2004

0002 Windows-Pfad ermitteln

Die Position des Windowsverzeichnisses läßt sich leicht mit der API-Funktion GetWindowsDirectory ermitteln. Beachten Sie lediglich, dass Sie bei der Pufferübergabe den String zuvor mit Leerzeichen füllen. Das kann schon in der Zeile der Variabelndeklaration geschehen: Dim temp As String * 255 legt die Variabel temp nicht nur an, sondern füllt sie auch gleichzeitig mit 255 Zeichen (s.u.).

' Deklaration:
Declare Function GetWindowsDirectory Lib "kernel32" Alias "GetWindowsDirectoryA" _
    (ByVal lpBuffer As String, ByVal nSize As Long) As Long
 
' Funktion:
Public Function getWinFolder() As String
  Dim sLen As Long
  Dim temp As String * 255

  sLen = GetWindowsDirectory(temp, Len(temp))
  getWinFolder = Left$(temp, sLen)
End Function
Autor: ralf schlegel
Stand: 10/2004

0001 Datei auf Existenz prüfen

Fast in jeder Applikation notwendig und in vielen Varianten im Netz zu finden, hier unsere Version:

' Prüft auf Existenz der übergebenen Datei. Hierbei werden
' auch die Attribute Hidden und System mit eingebunden!
Public Function file_exist(ByVal file As String) As Boolean
  On Local Error GoTo FuncError
  If (file <> "") Then
    file_exist = (Dir(file, vbHidden + vbSystem) <> "")
  Else
    file_exist = False
  End If
  Exit Function
FuncError:
  file_exist = False
End Function
Autor: ralf schlegel
Stand: 10/2004