FILEDLG.DLL: Beschreibung
Übersicht
FILEDLG (FILEDLG.DLL) ist ein COM-Modul von ERCC, das den Standarddialog zur Dateiauswahl von Windows (COMDLG32.DLL) als Objekt für OLE/COM-Clients wie bspw. Visual Basic Script (VBS) verfügbar macht. Es kann bei Bedarf alternativ oder ergänzend zu Microsofts COM-Modul COMDLG32.OCX eingesetzt werden. Eine mögliche Verwendung zeigt der VBS-Code zum Dateienvergleich.
Der folgende Auszug gibt die allerwichtigsten Anweisungen wieder.
Set dlg = CreateObject("FileDlg.FileSelection") dlg.DialogTitle = "Bitte eine Datei auswählen" dlg.ShowDialog f = dlg.FileName
FILEDLG ist eine reine Unicode-Version für NT-basiertes Windows ab Windows 2000. FILEDLG verwendet die API-Funktion GetOpenFileName in grundsätzlich ähnlicher Weise wie COMDLG32.OCX. Der Funktionsumfang ist demgegenüber allerdings deutlich vereinfacht und auf die Auswahl einer vorhandenen Datei ausgerichtet.
Methoden und Eigenschaften
Die für den vorgesehenen Anwendungszweck nicht benötigten Objekteigenschaften sind weggelassen, d.h. durch interne Vorgaben ersetzt worden. In dieser Weise sind die folgenden Parameter und Flags vordefiniert:
Filter = *.* Flags = OFN_FILEMUSTEXIST + OFN_PATHMUSTEXIST + OFN_HIDEREADONLY + OFN_NOCHANGEDIR
Die Stringlängen (nMaxFile etc.) sind sämtlich auf 256 Zeichen festgelegt.
FILEDLG.FileSelection verfügt über die folgenden Eigenschaften, die denen von COMDLG32.OCX entsprechen:
DialogTitle | spezifischer Fenstertext (Parameter) |
InitDir | voreingestelltes Verzeichnis (Parameter) |
FileName | vollständiger Dateiname (Rückgabewert) |
FileTitle | bloßer Dateiname ohne Pfad (Rückgabewert) |
Der Funktionsaufruf zur Anzeige des Dialogs lautet abweichend:
ShowDialog | Methode zur Anzeige des Windows-Dialogs |
FILEDLG.FileSelection verfügt über folgende zusätzliche Eigenschaften:
FilePath | bloßer Dateipfad (Rückgabewert) |
Error | Fehlercode (Rückgabewert) |
Der Dateipfad wird intern aus dem Dateinamen und dem Rückgabewert nFileOffset der API-Funktion erzeugt. Ein abschließender Backslash ist enthalten. Der Fehlercode wird (bei »unwahrem« Funktionswert von GetOpenFileName) über die API-Funktion CommDlgExtendedError ermittelt. Error erhält somit ggfs. den entsprechenden DWORD-Wert.
Der Abbruch der Dateiauswahl durch den Benutzer führt nicht zu einem Fehlercode. (In FILEDLG.DLL wird auch kein Error-Event erzeugt.)
Verzeichnisauswahl
FILEDLG enthält außerdem noch den Windows-Dialog zur Verzeichnisauswahl (Shell-API, Funktion SHBrowseForFolder u.a.). Dieser Dialog ist zwar standardmäßig als COM-Objekt vorhanden (SHELL32.DLL), aber FILEDLG vereinfacht die Benutzung in Visual Basic Script. Zudem bot es sich auch aus praktischen Gründen an, beide Auswahldialoge zusammenzufassen.
Einfaches Anwendungsbeispiel (VBS):
Set dlg = CreateObject("FileDlg.PathSelection") dlg.ShowDialog f = dlg.FolderName
FILEDLG.PathSelection verfügt über folgende Eigenschaften:
DialogText | zusätzlicher Text, max. 1024 Zeichen (Parameter) |
InitDir | voreingestelltes Verzeichnis (Parameter) |
FolderName | Name des ausgewählten Verzeichnisses (Rückgabewert) |
Error | Fehlercode (Rückgabewert) |
Die Anwendung ist intern auf Objekte (Pfade) des Dateisystems begrenzt. Wird InitDir nicht (oder nicht funktionskompatibel) definiert, so ist das Root-Objekt des Dateisystems voreingestellt (also »Arbeitsplatz« oder »Mein Computer« o.ä.).
Error erhält zwei mögliche Werte: 1 wenn die Shell-Funktion kein Ergebnis liefert (typischerweise bei Abbruch durch den Benutzer), 2 wenn die Verzeichnisauswahl intern nicht ausgewertet werden kann (theoretischer Fall).
Lizenz/Hinweise
FILEDLG.DLL wird als Freeware und »so wie es ist« zur Verfügung gestellt. Die Überlassung erfolgt also unentgeltlich und für beliebige Verwendungszwecke, aber auch ohne jede Gewährleistung oder Haftung. Verbesserungsvorschläge sind natürlich willkommen.
Download
Die Datei filedlg.zip enthält FILEDLG.DLL zusammen mit einer beschreibenden Textdatei.
Zur Installation wird FILEDLG.DLL in einem prinzipiell beliebigen Verzeichnis gespeichert und einmalig als COM-Modul registriert.
FILEDLG.DLL kann auch mit dem Setup-Programm zum oben erwähnten Windows-Utility Dateien vergleichen installiert werden.