ABOUT Visual Basic Programmieren Programmierung Download Downloads Tips & Tricks Tipps & Tricks Know-How Praxis VB VBA Visual Basic for Applications VBS VBScript Scripting Windows ActiveX COM OLE API ComputerPC Microsoft Office Microsoft Office 97 Office 2000 Access Word Winword Excel Outlook Addins ASP Active Server Pages COMAddIns ActiveX-Controls OCX UserControl UserDocument Komponenten DLL EXE
Diese Seite wurde zuletzt aktualisiert am 10.01.2000

Diese Seite wurde zuletzt aktualisiert am 10.01.2000
Aktuell im ABOUT Visual Basic-MagazinGrundlagenwissen und TechnologienKnow How, Tipps und Tricks rund um Visual BasicActiveX-Komponenten, Controls, Klassen und mehr...AddIns für die Visual Basic-IDE und die VBA-IDEVBA-Programmierung in MS-Office und anderen AnwendungenScripting-Praxis für den Windows Scripting Host und das Scripting-ControlTools, Komponenten und Dienstleistungen des MarktesRessourcen für Programmierer (Bücher, Job-Börse)Dies&Das...

Themen und Stichwörter im ABOUT Visual Basic-Magazin
Code, Beispiele, Komponenten, Tools im Überblick, Shareware, Freeware
Ihre Service-Seite, Termine, Job-Börse
Melden Sie sich an, um in den vollen Genuss des ABOUT Visual Basic-Magazins zu kommen!
Informationen zum ABOUT Visual Basic-Magazin, Kontakt und Impressum

Zurück...

Zurück...


Anzeige

(-hg) mailto:hg_formatdrivedlg@aboutvb.de

In Ihrem Programm soll der Anwender irgendwelche Daten auf einer Diskette speichern können und Sie möchten es ihm ermöglichen zuvor eine Diskette frisch zu formatieren? Dann sollten Sie sich nicht lange mit der Entwicklung eigener Formatier-Routinen und -Dialogen aufhalten, sondern dem Anwender den entsprechenden Standard-Dialog anzeigen. Zum einen ist die dahinterstehende Operation des Betriebssystems als ausgereift und stabil zu betrachten. Zum anderen ist der Standard-Dialog dem Anwender in der Regel vertraut. Und er hat die Möglichkeit, sich zwischen der vollständigen Formatierung und der Schnellformatierung des Datenträgers zu entscheiden, und er kann auch einen Datenträgernamen angeben bzw. einen vorhandenen Namen ändern.


Mit dem Standard-Dialog zur Formatierung von Datenträgern ist der Anwender vertraut

Die API-Funktion SHFormatDrive ist weder in im Windows-SDK dokumentiert noch sind Deklaration und Konstanten in den C-Include-Dateien enthalten. Dennoch sollte man die Funktion bedenkenlos und auch zukunftssicher verwenden können, da Microsoft selbst in einem MSDN Library - KB SHFormatDriveArtikel der Knowledge-Base die dokumentations-üblichen Informationen dazu liefert.

Die Funktion FormatDriveDlg vereinfacht den Aufruf der API-Funktion und bietet zugleich die Möglichkeit, das gewünschte Laufwerk sowohl über den Laufwerksbuchstaben als auch über die MS-DOS-übliche Nummer (beginnend ab 0, also Laufwerk A: gleich 0) zu spezifizieren. Da der besagte Knowledge-Base-Artikel anmahnt, immer ein Fenster als Bezug zu übergeben, sollten Sie das entsprechende Fenster-Handle eines Forms (hWnd-Eigenschaft) verwenden. Da im Grunde das Handle des Desktops genauso geeignet ist, können Sie im optionalen Parameter hWnd der Funktion FormatDriveDlg auch 0 übergeben oder ihn ganz weglassen. In der Funktion wird dann über die API-Funktion MSDN Library - API GetDesktopWindowGetDesktopWindow automatisch das Handle des Desktops ermittelt und verwendet.

Den Erfolg der Aktion meldet die Funktion in ihrem Rückgabewert. Die möglichen Werte sind hier als enumerierte Konstanten bereitgestellt. Bricht der Anwender selbst den Dialog ab (Schaltfläche "Schließen"), ohne die Formatierung gestartet zu haben, wird fdRetCancelled zurückgegeben. Wurde versehentlich die Kennung eines nicht-formatierbaren Laufwerks übergeben (etwa ein CD-ROM-Laufwerk), wird fdRetNotFormattable zurückgegeben. Alle übrigen Fehler auf Betriebsystemebene werden als fdRetError unspezifiziert gemeldet. Während für diese Rückgabewerte die API-Funktion SHFormatDrive zuständig ist, wird der Rückgabewert fdRetInvalidDrive von der Funktion FormatDriveDlg selbst generiert, wenn ein "unmöglicher" Laufwerksbuchstabe oder eine entsprechende Laufwerksnummer übergeben worden ist.

Private Declare Function GetDesktopWindow Lib "user32" () As Long
Private Declare Function SHFormatDrive Lib "shell32" _
 (ByVal hWnd As Long, ByVal Drive As Long, ByVal fmtID As Long, _
 ByVal Options As Long) As Long

Public Enum fdReturnConstants
  fdRetSuccess = 0
  fdRetError = -1
  fdRetCancelled = -2
  fdRetNotFormattable = -3
  fdRetInvalidDrive = -4
End Enum

Public Function FormatDriveDlg(Drive As Variant, _
 Optional ByVal hWnd As Long) As fdReturnConstants
  Dim nDriveNumber As Long
  Dim nWnd As Long
  
  Const SHFMT_ID_DEFAULT = &HFFFF&
  Const SHFMT_OPT_FULL = 1
  
  If IsNumeric(Drive) Then
    Select Case CLng(Drive)
      Case 0 To 25
        nDriveNumber = CLng(Drive)
      Case Else
        FormatDriveDlg = fdRetInvalidDrive
        Exit Function
    End Select
  ElseIf VarType(Drive) = vbString Then
    Select Case UCase$(Left$(Drive, 1))
      Case "A" To "Z"
        nDriveNumber = Asc(UCase$(Left$(Drive, 1))) - 65
      Case Else
        FormatDriveDlg = fdRetInvalidDrive
        Exit Function
    End Select
  End If
  If hWnd = 0 Then
    nWnd = GetDesktopWindow()
  Else
    nWnd = hWnd
  End If
  FormatDriveDlg = SHFormatDrive(nWnd, nDriveNumber, _
   SHFMT_ID_DEFAULT, SHFMT_OPT_FULL)
End Function

Die Funktion FormatDriveDlg öffnet den Standard-Dialog zum Formatieren von Datenträgern


Modul modFormatDriveDlg (modFormatDriveDlg.bas - ca. 1,5 KB)






Themen - Allgemeines
Themen - Entwicklungsumgebung (VB-IDE)
Themen - Forms
Themen - Steuerelemente (Controls)
Themen - Grafik
Themen - Dateien
Themen - UserControls
Themen - Einsteiger-Tipps
Themen - Wussten Sie...?

Übersicht nach Titeln in alphabetischer Reihenfolge
Übersicht nach Erscheinungsdatum

Schnellsuche



Zum Seitenanfang

Copyright © 1999 - 2017 Harald M. Genauck, ip-pro gmbh  /  Impressum

Zum Seitenanfang

Zurück...

Zurück...

Download Internet Explorer