Windows Contextmenu - Parameter erhalten ?

  • VB.NET
  • .NET (FX) 4.0

Es gibt 9 Antworten in diesem Thema. Der letzte Beitrag () ist von Trade.

    Windows Contextmenu - Parameter erhalten ?

    Hallo Leute,

    ich habe mal eine kleine Frage. ;)

    Ich möchte einer Dateierweiterung, zum Beispiel ".test", eine Anwendung hinterlegen.
    Das ist kein Problem, ich gehe einfach in die Registry und verändere den Shell-Eintrag der jeweiligen Extension. So weit so gut.

    Jetzt müsste meine Anwendung allerdings wissen, was sie tun soll und da habe ich zur Zeit ein Problem:
    Damit ich meiner Anwendung sagen kann, was sie tun soll müsste ich erfahren wo die Datei liegt.
    Doppelklick oder Öffnen der ".test"-Datei -> Starten meiner .Exe und nun muss ich wissen, wie der Dateiname bzw. der Pfad der Datei ist.
    Weiß einer wie ich das herausfinden kann? Ziel soll sein, dass ich die ".test"-Datei auswerten und dem entsprechend agieren kann. Also wie kann ich diesen Parameter erhalten?

    Grüße,
    Drahuverar
    Option Strict On!
    Wenn Du die Registrierungsschlüssel richtig eingetragen hast, wird der Pfad automatisch als Befehlszeilenargument an die Anwendung übergeben.

    Grüße
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
    Hey @Trade
    Dachte ich auch, allerdings muss ich meiner .Exe doch im, nun in dem Fall dem Load-Event, klar machen das sie den Parameter nehmen soll.
    Mache ich etwas falsch mit der Environment.GetCommandLineArgs-Methode()?
    Wenn ich meine Anwendung nämlich starte erhalte ich "0"-Argumente.
    Ist das die falsche Methode?

    In der Registry ist meine Anwendung unter .test C:\Mein Programm.exe "%1" hinterlegt.
    %1 sollte ja den Pfad der .test-Datei wiedergeben?

    Grüße,
    Drahuverar
    Option Strict On!

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

    Nein, das müsste passen. Hast Du auch die richtigen Unterschlüssel erstellt? Das Problem hatte ich nämlich auch mal: stackoverflow.com/questions/27…not-handle-over-file-path

    Siehe meine Antwort, das hat geklappt.

    Grüße
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
    @Trade
    Sauber, danke! Ich schau mal fix nach und melde mich mit einem 'Hilfreich', wenn ich es erledigt habe. :D

    Off-Topic:
    Hattest du damals 'ne gute Dokumentation gefunden hierzu, also bzgl. .NET ?
    Habe das bei Windows finden können Creating Shortcut Menu Handlers
    Mich würden ja verschiedene Contextmenus von Windows interessieren; Desktop, Verzeichnisse,...
    Option Strict On!
    Weiß nicht, ich habe nie wirklich danach geschaut, um ehrlich zu sein. :D
    Bin nur damals auf das eine getroffen und habe das seitdem integriert.

    Grüße
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
    Hi
    schaut euch auch mal
    msdn.microsoft.com/en-us/libra…ndlineargs(v=vs.110).aspx
    an, ich hab jetzt keine rechte Lösung hier im Thema gefunden. Außerdem hat Environment noch eine Commandline-Eigenschaft.
    Bin gerade nur mobil on, sonst würde ich einen Quellcode dazu schreiben und den Beitrag schöner formatieren.

    Viele Grüße
    ~blaze~
    Hey @~blaze~,
    hatte mir natürlich die Methode auf MSDN angesehen. ;)
    Wie gesagt, irgendwas lag wohl quer und nach einem Neustart lief es ja einwandfrei.

    Ich habe mal eine Solution mit 2 Projekten angehangen:
    WindowsContextMenu - Extension und MyProg

    MyProg
    Simple Anwendung die als Standardprogramm für '.test'-Dateien genutzt werden soll. Gibt einfach die Argumente aus; als MessageBox und in einer ListBox


    WindowsContextMenu - Extension
    Hier wird das ContextMenu von Windows erweitert, wenn es sich um die Datei mit der Extension '.test' handelt. Ich habe das mal in 3 Events ausgelagert, um es schritt für schritt darzustellen.
    1. Eintrag in der Registry
    2. Erstelle eine '.test'-Datei mit dem Inhalt "Dies ist ein Test." und öffne den Explorer. Rechtsklick auf die Datei sollte an erster Stelle "Mit Test starten" anzeigen.
    3. Entferne den Eintrag wieder
    [list=1][/list]Grüße,
    Drahuverar
    (P.S.: kA wieso das listing [list] aufgeführt wird)[/list]
    Dateien
    Option Strict On!

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

    @~blaze~ Ja, die Lösung war halt auf StackOverflow. :rolleyes:
    Im Endeffekt liegt es halt daran, dass man schnell mal die falschen Unterschlüssel erstellt.

    Und wenn die passen, kann man den Pfad im Main oder über Environment.GetCommandLineArgs abrufen.

    Grüße
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!: