·  Start ·  Programme ·  Codes ·  Tipps ·  ActiveX ·  Tutorials · 




Viele Programmierer wollen auch eigene Dateiextensionen erstellen und verwalten. Dazu muss der betreffende Dateityp registriert werden. Dieses Tutorial behandelt aber nicht nur eigene Extensionen, sondern zeigt auch, wie schon bestehende Dateien (beispielsweise Bitmaps *.bmp) an eigene Programme übergeben und ausgewertet werden.
 

Übersicht:

Allgemeines
Registry allgemein
Registry speziell
Command ( )
Beispielprojekt
Zusammenfassung

 
 Allgemeines

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.

 

 Registry allgemein

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() .

 

 Registry speziell

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.

 


 Command ( )

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:


       

 

 Beispielprojekt

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.

Download  Beispielprojekt  ( 7,58 KB )
Aktualisiert: 12.02.2008, 20:49 Uhr Copyright © 2001 - 2010 by ST-software Navigation zurück  |  Navigation vorwärts  |  Zum Seitenanfang     
Ihre IP: 38.107.191.83 ·  Seite erstellt in: 0.737 Sekunden ·  Dateigröße:  14790 Bytes