Programm mit Datei öffnen

  • VB.NET

Es gibt 11 Antworten in diesem Thema. Der letzte Beitrag () ist von blaschdr.

    Programm mit Datei öffnen

    Hallo zusammen,

    ich habe das Forum bereits durchstöbert, aber nichts brauchbares gefunden, oder vielleicht auch nicht verstanden ....

    Ich habe ein Programm erstellt bei dem ich auch eine Datei abspeichere mit einer eigenen Endung.
    Die Endung habe ich auch über die Projekteigenschaften "registriert", soweit so gut.
    Wenn ich jetzt ein Doppelklick auf die gespeicherte Datei mache, startet zwar mein Programm, aber nicht die entsprechende Form.
    Ich muss dem Programm ja irgendwo sagen, dass es nun von einer Datei gestartet wurde und nicht von der exe Datei.
    Aber wo und wie mache ich das?

    Wenn das Programm bereits gestartet ist, kann ich Datei laden und auch neu speichern, nur möchte ich eben auch, wenn ich Doppelklick auf eine Datei machen, dass das Programm startet.

    Also wie wenn ich zum Beispiel auf eine Exceltabelle doppelklicke.

    Ich hoffe ich habe es verständlich erklärt ^^ .

    Und schonmal Danke für eure Hilfe :)
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen
    @blaschdr Deine Datei musst Du natürlich selbst dazu laden, die Information dazu bekommst Du vom System mit geliefert.
    Frage im Form_Load-Event Environment.GetCommandLineArgs() und Environment.GetCommandLineArgs()(1) ab.
    Teste was passiert, wenn Dein Programm ohne Argumente aufgerufen wird.
    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!

    VB.NET-Quellcode

    1. Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    2. For i = 0 To Environment.GetCommandLineArgs().Length - 1
    3. MessageBox.Show(Environment.GetCommandLineArgs()(i))
    4. Next
    5. End Sub
    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!
    @VB1963 Ich vermute, dass er sozusagen Word mit einer Docx starten will, wenn er auf die Docx doppelklickt.
    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!
    Danke @RodFromGermany teste ich morgen.

    Und nein ich will kein Worddokument öffnen :D, das mit der Excel war nur ein Beispiel.


    Also nochmal zur Erklärung. Ich habe eine App programmiert in der man Werte eingeben und berechnen kann. Beim starten kommt eine Hauptmaske, in der man dann verschiedene Berechnungen durchführen kann, jeweils über eine eigene Form. Wenn dann alles eingegeben wurde, kann man die Eingaben speichern, dazu schreibe ich eine Datei. In der Datei steht auch der Name der Form drin.

    Mein Ziel ist es, wenn man doppelt auf die Gespeicherte Datei klickt, dass dann die App und die entsprechende Form startet.

    Das laden innerhalb der App habe ich schon programmiert, das funktioniert soweit auch.

    Ich hoffe ich habe es nun verständlicher erklärt … bin nicht so gut im erklären =O .

    ich gebe Info ob es geklappt hat.

    blaschdr schrieb:

    Und nein ich will kein Worddokument öffnen
    Exakt genau deswegen steht da

    RodFromGermany schrieb:

    sozusagen
    :D
    Probier mal so was:

    VB.NET-Quellcode

    1. Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    2. If Environment.GetCommandLineArgs().Length > 1 Then
    3. Dim name = IO.File.ReadAllText(Environment.GetCommandLineArgs()(1))
    4. Select Case name
    5. Case "Form1"
    6. Dim dlg = New Form1()
    7. dlg.Show()
    8. ' oder
    9. Using dlg2 = New Form1
    10. dlg2.ShowDialog()
    11. End Using
    12. Case Else
    13. MessageBox.Show($"Unbekannte Form: {name}")
    14. End Select
    15. End If
    16. End Sub
    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!

    blaschdr schrieb:

    Mein Ziel ist es, wenn man doppelt auf die Gespeicherte Datei klickt, dass dann die App und die entsprechende Form startet.
    Ich glaube das Problem hier ist, dass die Datei bzw. deren Extension im System registriert werden muss, damit beim Doppelklick deine App aktiviert wird.
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --
    @petaod
    Ich glaube das Problem hier ist, dass die Datei bzw. deren Extension im System registriert werden muss, damit beim Doppelklick deine App aktiviert wird.


    Nein das habe ich bereits gemacht :), die App startet auch, aber die Datei wird sozusagen nicht geöffnet.
    Die Endung habe ich auch über die Projekteigenschaften "registriert", soweit so gut.



    @RodFromGermany
    Dein Code habe ich getestet leider ohne Erfolg.
    Ich vermute aber es liegt daran, dass die App, wenn sie Startet, erst mal nur das Hauptformular anzeigt.
    Wenn ich dann über die App eine gespeicherte Datei lade, wird ein neues Formular als "Children" geöffnet.
    Also ich habe sozusagen mehrere Formulare, je nachdem was berechnet werden soll.



    @RodFromGermany
    Es funktioniert .... hatte noch n Fehler drin.
    Danke nochmal für die Hilfe.

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