VB2010 Conmandlineargs

  • VB.NET

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von Harry_Hirsch_4711.

    VB2010 Conmandlineargs

    Hallo Experten,

    ich stehe vor einem Problem, wo mir im Moment die Ideen fehlen....

    Ich habe eine Anwendung erstellt (VB2010 express) und möchte nun, dass beim Doppelklick auf die Datei die Datei geöffnet wird. Also Dateiendung beim Veröffentlichen registieren lassen und gut.

    Das Ergebnis sieht so aus:

    Die Dateien haben das "richtige" Icon erhalten. Also eignetlich alles gut.....

    Doppelklick auf Datei xy.xy => Die Anwendung startet, aber die Datei wird nicht geladen

    Nehme ich die Datei und lasse Sie per Drag und Drop auf die Anwendung (im bin-Verzeichnis als auch im APPS) fallen, funktioniert alles. Also die Datei wird geöffnet...



    Beim Doppelklick ist die Anzahl der Argumente von CommandLineArgs = 0. Daher klappt es nicht.....

    Was habe ich nicht beachtet oder vergessen?


    Codeausschnitt aus dem Event Form LOAD

    VB.NET-Quellcode

    1. MsgBox(My.Application.CommandLineArgs.Count)
    2. For Each argument As String In My.Application.CommandLineArgs
    3. MsgBox(argument)
    4. If (Trim(argument) <> "") Then
    5. Projekt_laden(argument)
    6. End IfNext


    Ich weiss da ist noch Feinschliff erforderlich, aber es sollte erstmal prinzipell klappen.



    Wenn Ich

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Harry_Hirsch_4711“ () aus folgendem Grund: Ergänzungen

    Also Dateiendung beim Veröffentlichen registieren lassen und gut.

    Hast du denn auch einen Shell Command hinterlegt der etwa SO aussieht:
    AppPath\AppName %1

    Dieser muss glaube ich in die Registry in HKCR\DeinDateiType\shell\open\command.
    Dann wird deine Anwendung gestartet und die Datei ist der Parameter

    //EDIT

    Wie veröffentlichst du die Anwendung?
    Über Visual Studio mit ClickOnce ?

    Falls ja kannst du dort auch Dateiendung registrieren lassen, die dann bei der Deinstallation auch wieder entfernt werden.
    Dazu auf dein Projekt->Eigenschaften->Veröffentlichen->Optionen->Dateizuordnungen

    Ciao
    Das ist meine Signatur und sie wird wunderbar sein!
    Ich habe eine Anwendung geschrieben die Dateien ablegt und beim Doppelklick auf die angelegte Datei sollte das Programm gestartet werden (was auch passiert) und die Datei geladen werden (das passiert nicht).

    Wenn ich die Anwendung aus dem CMD-Fenster starte > xyz.exe c:\xy.xy klappt es.


    Also Dateiendung beim Veröffentlichen registieren lassen und gut.

    Hast du denn auch einen Shell Command hinterlegt der etwa SO aussieht:
    AppPath\AppName %1

    Dieser muss glaube ich in die Registry in HKCR\DeinDateiType\shell\open\command.
    Dann wird deine Anwendung gestartet und die Datei ist der Parameter

    //EDIT

    Wie veröffentlichst du die Anwendung?
    Über Visual Studio mit ClickOnce ?

    Falls ja kannst du dort auch Dateiendung registrieren lassen, die dann bei der Deinstallation auch wieder entfernt werden.
    Dazu auf dein Projekt->Eigenschaften->Veröffentlichen->Optionen->Dateizuordnungen


    Die Veröffentlichung ist über Projekt->Eigenschaften->Veröffentlichen->Optionen->Dateizuordnungen und dort ist auch die Dateierweiterung bekannt gemacht. Mit Beschreibung, ProgId und Symbol.

    Das heist Windows kennt den Dateityp und auch die Anwendung. Da beim Doppelklick auf xy.xy die Anwendung gestartet wird. Aber nun muss ich Windows auch noch mal sagen, der Dateiname auf die der User ein Doppelklick gemacht hat, auch zur Anwendung übergeben wird?

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Harry_Hirsch_4711“ ()

    setzt mal den debugger auf die erste zeile im Projekt_laden-Sub. Check dann mal ob überhaupt der richtige pfad übergeben wird (womöglich wird der sub mehrmals aufgerufen, teilweise mit falschangaben). Dann zuerst prüfen ob es sich um einen gültigen pfad handelt / die datei existiert (=> System.io.file.exist oder so)

    Bei mir funst der code nähhmlich einwandfrei
    Klick hier

    Bei ClickOnce Installationen ist es offenbar nicht möglich, über CommandlineArgs auf den Dateipfad zuzugreifen.
    Sondern: AppDomain.CurrentDomain.SetupInformation.ActivationArguments.ActivationData

    Ciao
    Das ist meine Signatur und sie wird wunderbar sein!