 |
| Top-Quellcodes |
|
|
| Rubriken |
|
|
| Kontakt |
|
|
| Suchen |
|
|
|
|
|
Das Erstellen und Registrieren eigener Dateitypen bzw. -extensionen ist im Prinzip sehr einfach. Wie bei allen Registrymanipulationen sollten Sie vorher ein Backup der Registry erstellen.
Sie können jede beliebige Datei mit ihrem Programm verknüpfen - Voraussetzung ist allerdings, dass ihr Programm die übergebenen Parameter auch umsetzen kann.
Wenn Sie einer Bitmap-Datei (*.bmp) in der Registry ihr eigenes Programm zuweisen und damit sicherstellen, dass bei jedem Öffnen einer bmp-Datei ihre Anwendung gestartet wird, müssen Sie diese Datei
öffnen können. Sinnvollerweise sollte ihr Programm in diesem Fall Bitmaps verändern und wieder speichern können.
Im nächsten Kapitel erfahren Sie zunächst mehr über die Registry.
|
Wenn Sie Ihre eigene Routine zum Auslesen und Schreiben von Werten aus der /in die Registry haben, können Sie dieses Kapitel überspringen.
Im Anhang finden Sie ein Beispielprojekt mit einem Modul, das nur die Registry betrifft. Sie können dieses Modul ebenso in anderen Anwendungen einsetzen.
Die Vorgangsweise für eigene Dateiextensionen zeigt folgender Ablauf:
1) Überprüfen, ob der betreffende Schlüssel und Wert bereits vorhanden ist.
2) Ist der Wert nicht mehr vorhanden, weil ihn der User oder ein anderes Programm gelöscht haben, muss die Registrierung erneut erfolgen.
3) Übergabe der gewünschten Datei an ihr Programm per Command() .
|
Ich will Ihnen anhand eines Beispiels die zuständigen Schlüssel näher bringen:
Eigene Dateiextension
Wir nehmen an, dass unsere "eigenen" Dateien die Endung "ffg" haben. Obwohl es Windowsstandard ist, nur Extensionen mit drei Zeichen zu verwenden, gibt es mittlerweile auch Dateien mit mehr
Zeichen. Versuchen Sie eine "einmalige" Extension zu schaffen. Die Dateitypen BMP oder GIF gibt es bereits; wenn Sie Textdateien bearbeiten wollen, werden Sie mit bmp-Dateien arge
Schwierigkeiten bekommen ;-)
Registry-Schlüssel:
Zuständig für unseren neuen Dateityp "xsc" ist der Schlüssel:
HKEY_CLASSES_ROOT
In diesem Registryzweig wird nun ein neuer Schlüssel mit dem Namen ".xsc" erstellt.

Als Standardwert für diesen neuen Schlüssel nehmen Sie "xscfile". Es ist jeder beliebige Name möglich, jedoch sollte er aussagekräftig und selbsterklärend sein.
Hinweis:
Betrachten Sie einmal die bestehenden Schlüssel im Zweig HKEY_CLASSES_ROOT. Sie finden dort alle registrierten Dateitypen.
Als nächster Schritt muss die Bezeichnung für unsere Datei "xscfile" registriert werden.
Dazu wird einfach ein neuer Schlüssel angelegt. Der neue Schlüssel sieht dann so aus:
HKEY_CLASSES_ROOT\xscfile
Unterschlüssel:
Nun sind noch einige wenige Schritte erforderlich. Es müssen noch drei Schlüssel erstellt werden.
Für den Schlüssel "xscfile" erstellen wir den Schlüssel "shell", für diesen den Schlüssel "open" und dann noch den Schlüssel "command". Erst für den Schlüssel "command" wird ein bestimmter
Wert festgelegt.
Es ist der komplette Pfad zu Ihrer Anwendung (zB C:\Programme\MeinProgramm.exe).
Achten Sie darauf, diesen Wert in Anführungszeichen zu setzen. Der Eintrag für "Standard" sieht so aus: "C:\Programme\MeinProgramm.exe" %1

Vergessen Sie nicht die Zeichenfolge "%1" anzugeben.
|
Die Visual-Basic-Funktion "Command ()" ist für die Parameterübergabe verantwortlich.
Dieser Funktion wird einfach ein Stringwert übergeben, in unserem Fall der gesamte Pfad der zu öffnenden Datei.
Binden Sie diese Funktion in das Ereignis "Form_Load" Ihrer Anwendung ein:
Dim cmdline
cmdline = Command()
RichTextBox1.LoadFile cmdline
Wie funktioniert es ?
Der zu bearbeitende (oder zu öffnende) Dateityp mit der Extension "xsc" wurde in der Registry gespeichert. Wenn diese Datei geöffnet wird (Doppelklick, einfacher Klick je nach Einstellung), wird das
in der Registry festgelegte Programm gestartet.
Mit der Befehlszeile Command() wird nun an unser Programm übergeben, von wo es aufgerufen wurde. Praktisch der gesamte Pfad.
Anmerkung:
Sie können auch andere Parameter übergeben, wie es zu DOS-Zeiten üblich war.
Legen Sie beispielsweise fest, dass mit "C:\meinProgramm.exe A" das Formular "frmMain" gestartet werden soll und mit "C:\meinProgramm.exe B" das Formular "frmAbout", dann wird der Code so
realisiert:
Sub Main()
Dim cmdLine As String
cmdLine = Command()
Select Case cmdLine
Case "A"
frmMain.Show
Case "B"
frmabout.Show
Case Else
frmMain.Show
MsgBox "Fehler im System"
End Select
End Sub
Der Aufruf erfolgte in diesem Fall von einem Modul heraus (Sub Main).
Mehrere Dateitypen
Größere Programme wie Paint Shop Pro bieten dem Anwender die Möglichkeit, nur bestimmte Dateien mit ihrem Programm zu verknüpfen. Sie können also den User wählen lassen, welche Dateien mit Ihrer
Anwendung geöffnet werden:

|
Anhand eines Beispiels (welches Sie auch im Anhang finden), will ich den Ablauf noch einmal erläutern:
Zuerst ist es wichtig, den Dateityp zu registrieren. Dies geschieht im Ereignis Form_Load. Optional können Sie die Einstellungen auch in ein anderes Formular auslagern (siehe FileAssociations bei
Paint Shop Pro).
Private Sub Form_Load()
On Error Resume Next
Call Settings
Call RegistryCheck
Dim cmdLine
cmdLine = Command()
RichTextBox1.LoadFile cmdLine
Me.Caption = "X-SCR - " & cmdLine
End Sub
Im Ereignis Form_Load wird der gewünschte Parameter übergeben und in diesem Fall an eine Richtextbox übergeben. Stimmt der Dateityp nicht, weil es sich zB um eine *.wav-Datei handelt, bekommen Sie
einen Laufzeitfehler !
Natürlich sollte überprüft werden, ob der Schlüssel überhaupt noch existiert. Andernfalls werden Ihre Dateien nie mit Ihrem Programm geöffnet...
Diese Überprüfung wurde in die Funktion "RegistryCheck" ausgelagert.
Sub RegistryCheck()
'Auslesen der Registrierung, ob Eintrag
'HKEY_CLASSES_ROOT schon vorhanden (*.xsc)
'Wenn nicht (gelöscht oder erster Start)
'Schlüssel setzen, um Dateityp zu registrieren
On Error Resume Next
Dim Datei As String
Dim Datei2 As String
Dim Pfad As String
Pfad = App.Path & "\" & App.Title & ".exe"
Pfad = Chr(34) & Pfad & Chr(34) & " %1"
Datei = ".xsc"
Datei2 = ".xscfile"
If GetValue(HKEY_CLASSES_ROOT, "xscfile\shell\open\command", _
"", Pfad) Then
Exit Sub
Else
Dim a&, b&, c&, d&
Dim XscWert As String
XscWert = "xscfile"
a = CreateKey(HKEY_CLASSES_ROOT, _
".xsc", "")
b = SetValue(HKEY_CLASSES_ROOT, _
".xsc", "", XscWert)
c = CreateKey(HKEY_CLASSES_ROOT, _
"xscfile\shell\open\command", "")
d = SetValue(HKEY_CLASSES_ROOT, _
"xscfile\shell\open\command", "", Pfad)
End If
End Sub
|
| Zusammenfassung und Beispiel |
Dieses Tutorial sollte Ihnen nur einen Grundstock geben. Natürlich ist das Beispiel noch ausbaufähig. Es wurde zB nicht überprüft, ob der Pfad in der Registry noch stimmt. Falls Ihr Programm
verschoben wird, stimmt auch die Verknüpfung in der Registry nicht mehr. Eine Verbesserung sollte jedoch kein Problem darstellen, zumal Sie im Anhang ein sehr gutes Modul zur Manipulation der Registry
finden.
Beispielprojekt ( 7,58 KB )
|
|