|
Kann der Anwender in Ihrem Programm Dateien, Ordner oder
Laufwerke auswählen? Dann fehlt Ihnen vielleicht noch die
Möglichkeit, dem Anwender auch den Eigenschaften-Dialog zu einer
Datei, einem Ordner oder Laufwerk wie im Windows-Explorer
anzuzeigen. Den Eigenschaften-Dialog öffnen Sie über die
API-Funktion ShellExecuteEx, da Visual Basic selbst keine
Möglichkeit dazu bietet.
Da vor dem Aufruf von ShellExecuteEx
erst die als Parameter zu übergebende benutzerdefinierte Variable SHELLEXECUTEINFO
mit verschiedenen Informationen zu füllen ist, lassen wir diese
Arbeit von der Hilfsprozedur ShellFileProperties erledigen. Dieser
übergeben Sie den Pfad einer Datei, eines Ordners oder eines
Laufwerks. Die Übergabe des Fenster-Handles (hWnd-Eigenschaft)
eines Forms oder Steuerelements im optionalen Parameters OwnerhWnd
dient zur Zuordnung des dann geöffneten Eigenschaften-Dialogs zu
Ihrem Form oder Ihrer Anwendung. Eine sichtbare Wirkung hat dieser
Parameter jedoch nicht, so dass Sie gegebenenfalls auch darauf
verzichten können, falls Sie gerade kein Fenster-Handle zur
Verfügung haben sollten.
Nach dem Aufruf kehrt die Prozedur ShellFileProperties sofort
zurück, nachdem der Eigenschaften-Dialog geöffnet wurde. Sollte
der Aufruf fehlschlagen, wird ein Laufzeitfehler ausgelöst, den Sie
im aufrufenden Code abfangen und behandeln können. Für die
häufigsten Fehler sind in der Enumeration sfpErrorCodes
entsprechende Fehlerkonstanten definiert.
Private Type SHELLEXECUTEINFO
cbSize As Long
fMask As Long
hwnd As Long
lpVerb As String
lpFile As String
lpParameters As String
lpDirectory As String
nShow As Long
hInstApp As Long
lpIDList As Long
lpClass As String
hkeyClass As Long
dwHotKey As Long
hIcon As Long
hProcess As Long
End Type
Private Declare Function GetDesktopWindow Lib "user32" () As Long
Private Declare Function ShellExecuteEx Lib "shell32.dll" _
(SEI As SHELLEXECUTEINFO) As Long
Private Const SEE_MASK_FLAG_NO_UI = &H400
Private Const SEE_MASK_INVOKEIDLIST = &HC
Private Const SEE_MASK_NOCLOSEPROCESS = &H40
Public Enum sfpErrorCodes
sfpErrFileNotFound = 2
sfpErrPathNotFound = 3
sfpErrAccessDenied = 5
sfpErrOutOfMemory = 8
End Enum
Public Sub ShellFileProperties(FileName As String, _
Optional ByVal OwnerhWnd As Long)
Dim nSEI As SHELLEXECUTEINFO
With nSEI
.cbSize = Len(nSEI)
.fMask = SEE_MASK_FLAG_NO_UI Or SEE_MASK_INVOKEIDLIST _
Or SEE_MASK_NOCLOSEPROCESS
.hwnd = OwnerhWnd
.lpVerb = "properties"
.lpFile = FileName
End With
If ShellExecuteEx(nSEI) = 0 Then
Err.Raise Err.LastDllError, "ShowProps"
End If
End Sub
 |
Die Prozedur ShellFileProperties öffnet wie
im Windows-Explorer den Eigenschaften-Dialog zu einer Datei,
einem Ordner oder einem Laufwerk

|

|