Eigener Editor

  • VB.NET

Es gibt 12 Antworten in diesem Thema. Der letzte Beitrag () ist von Michael K..

    Eigener Editor

    Guten Abend, ich habe einen fast fertigen Editor. Er kann Dateien speichern und sie über das Editor-Menü öffnen. Nur bleibt mir ein Problem. Wenn ich z.B. jetzt File1.etf (*.etf = Kürzung für die Editor-Dateien wie *.txt) auf dem Desktop speichere, so möchte ich, dass a) mein Editor-Programm geöffnet wird und b) das der Text, der in der Datei gespeichert ist, in der Editor TextBox erscheint. Wie mache ich das?
    ja, dafür musst du in der Registry den Dateityp registrieren. Und dein Programm muss Kommandozeilenparameter unterstützen. Du kannst dann auch ein eigenes Icon für die Dateiendung festlegen und Aktionen wie z.b. "Öffnen" und "Drucken"

    Lightbull schrieb:

    Aus dem Programm könnte man es lösen, indem du einen Registryschlüssel erstellst der die Dateiendung und den Pfad deines Programms beinhaltet.
    Light-Bull-Shit.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Also meine Datenendung ist schon registriert. Wie auch schon erwähnt kann das Programm auch die Grundfunktionen außer eben eine *.etf-Datei mit dem Text in der TextBox öffnen.

    Ich kann euch nicht ganz folgen mit Parameter aus der Datei auslesen. Es ist beim Klick auf die *.etf-Datei ja nicht bekannt, wo sie liegt. Es wird einfach nur mein Texteditor geöffnet. Damit ihr euch nicht mit mir den Kopf zerbrechen müsst, kennt jemand einen Link, wo das gut erklärt wird, sodass auch Leute wie ich es verstehen?
    Um Dateiendungen zu Registrieren: (Stammt glaube ich aus diesem Forum, weiss aber nicht mehr von wem)
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Private Function Registerfile(ByVal endung As String, ByVal namedesdateityps As String, ByVal pfadzuprogramm As String, ByVal pfadzuicon As String) As Boolean
    2. Try
    3. Dim objSubKey As Microsoft.Win32.RegistryKey
    4. Dim objSubKey2 As Microsoft.Win32.RegistryKey
    5. Dim Wert As String = namedesdateityps
    6. Dim sKey As String = endung
    7. Dim sKey2 As String = endung & "\ShellNew"
    8. Dim sEntry As String = "Content Type"
    9. Dim sValue As String = "text/plain"
    10. Dim sEntry2 As String = "PerceivedType"
    11. Dim sValue2 As String = "text"
    12. Dim sEntry3 As String = "Nullfile"
    13. objSubKey = My.Computer.Registry.ClassesRoot.CreateSubKey(sKey)
    14. objSubKey.SetValue("", Wert)
    15. objSubKey.SetValue(sEntry, sValue)
    16. objSubKey.SetValue(sEntry2, sValue2)
    17. objSubKey2 = My.Computer.Registry.ClassesRoot.CreateSubKey(sKey2)
    18. objSubKey2.SetValue(sEntry3, "")
    19. Dim objSubKey3 As Microsoft.Win32.RegistryKey
    20. Dim sKey3 As String = namedesdateityps
    21. Dim sKey4 As String = namedesdateityps & "\shell\open\command"
    22. Dim skey5 As String = namedesdateityps & "\DefaultIcon"
    23. Dim sValue3 As String = namedesdateityps
    24. Dim objSubKey5 As Microsoft.Win32.RegistryKey
    25. Dim sValue5 As String = """" + pfadzuprogramm + """" + " %1"
    26. Dim sValue6 As String = """" + pfadzuicon + """"
    27. Dim objSubKey4 As Microsoft.Win32.RegistryKey
    28. objSubKey3 = My.Computer.Registry.ClassesRoot.CreateSubKey(sKey3)
    29. objSubKey3.SetValue("", sValue3)
    30. objSubKey4 = My.Computer.Registry.ClassesRoot.CreateSubKey(sKey4)
    31. objSubKey4.SetValue("", sValue5)
    32. objSubKey5 = My.Computer.Registry.ClassesRoot.CreateSubKey(skey5)
    33. objSubKey5.SetValue("", sValue6)
    34. Return True
    35. Catch ex As Exception
    36. Return False
    37. End Try
    38. End Function

    Zum Aufrufen:

    VB.NET-Quellcode

    1. If Registerfile(".my", "MyNotepad-Datei", Application.StartupPath & "\MyNotepad.exe", Application.StartupPath & "\doc 3.ico") Then
    2. MessageBox.Show("Die Dateiendung *.my wurde erfolgreich registiert.", "Info")
    3. Else
    4. MessageBox.Show("Die Dateiendung konnte nicht registriert werden." & vbNewLine & "Öffnen Sie MyNotepad als Administrator um die Dateiendung zu registrieren.", "Info")
    5. End If
    (Denke Administrator-Rechte werden benötigt.)

    Und um eine Datei beim Starten zu lesen: (Wahrscheinlich etwas unschön)
    Spoiler anzeigen

    VB.NET-Quellcode

    1. If My.Application.CommandLineArgs.Count > 0 Then
    2. Dim commandlineargs As String = Environment.CommandLine
    3. Dim path As String = Split(commandlineargs, """ ")(1).Replace("""", "")
    4. '...
    5. End If

    Also das hier in Form_Load reintun.


    (Beides aus meinem Übungsprojekt eines Editors ^^)

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „alca“ ()

    naseweis520 schrieb:

    Also soweit ich weiß, gibt's unter Projekt > [Name]-Eigenschaften > Veröffentlichung > [Button] Optionen > [Liste] Dateizuordnungen eine Einstellung, mit der man das Programm mit Dateiendung (und mit Symbol) verknüpfen kann.


    Das ist doch für eine Internetveröffentlichung gedacht, oder?