Programm über Kontextmenu von Windows starten und selektierte Dateien direkt im Programm anfügen

  • Hallo erstmal :)


    Ich hab da mal eine Frage. Ich bearbeite seit Stunden mein Programm und würde gerne über das Windows Kontextmenu mein Programm starten lassen (in nur einer Instanz) und dort dann direkt meine selektierten Dateien anzeigen lassen, in einer Listbox.


    Ich hab schon in der Registry paar Sachen geändert, sodass mein Kontextmenu schon mein Programm starten kann und auch bei einer selektierten Datei, die Datei direkt in der Listbox ausgibt.


    (Habe in der Registry einen Command eingeben: "derPfad\meinedatei.exe %1")


    Doch mein Problem ist nun, dass dies nicht mit mehreren Dateien funktioniert. Denn wenn ich mehrere Dateien selektiere und mein Programm dann über das Kontextmenu starte entstehen mehrere Instanzen, was ich aber nicht möchte.


    Ich habe schon viel gegooglet und herausgefunden, dass man das Problem über eine (komplizerte) Remoteverbindung machen könnte, was aber sehr langsam ist. Außerdem habe ich gelesen, dass .Net DDE nicht mehr unterstützt und dass es noch eine Möglichkeit über ein "DragTraget"


    oder "IDragTraget" gibt.


    Was mich zusätzlich verwirrt ist, dass wenn ich die Dateien auf meine *.exe ziehe alle in einer Instanz eingefügt werden. Also der Code dafür war ganz einfach:


    Doch warum ist das mit dem Kontextmenu so komplizert? :/ Gibt es da nicht auch eine so einfache Lösung?


    Würde mich freuen wenn mir jemand weiterhelfen könnte ;)

    Leb dein Leben solange es schön ist und lass dir in deine Entscheidungen und Ideen nicht rein reden ;) , denn es ist dein Leben ;)!

    Dieser Beitrag wurde bereits 1 Mal editiert, zuletzt von JackV+Z ()

  • Also ich habe noch nie mit dem Kontextmenü gearbeitet, deshalb kann ich dir auch nicht genau sagen, ob es eventuell einen besseren Weg gibt. Aber ich würds spontan so machen, dass ich beim Programmstart "nachschaue" ob schon eine Instanz von meinem Programm offen ist und die Daten dann meinem schon geöffneten Programm übergebe.


    Übrigens stehen die Argumente die beim Programmstart übergeben werden schon in dem String Array Parameter der Main Funktion drinne, du musst die also nicht nochmal neu setzen.

  • Erstmal danke für die schnelle Antwort ;)


    Also das mit dem auslesen ob schon eine Instanz offen ist hab ich auch schon gedacht nur mir fällt nichts ein wie ich dann die Daten an die offene Instanz übergebe ^^ da im Internet nur eine Lösung per Remoteverbindung stand und diese laut anderen Usern sehr langsam wäre und bei vielen Daten nicht sehr nützlich wäre :o


    Hättest du da vielleicht eine Idee wie ich die Daten übergeben könnte ?


    Danke übrigens für den hinweis ;) ^^ dachte nur vielleicht hilft das


    Code
    1. data = Environment.GetCommandLineArgs();


    hilft alle Daten über das Kontextmenu auszulesen ;)

    Leb dein Leben solange es schön ist und lass dir in deine Entscheidungen und Ideen nicht rein reden ;) , denn es ist dein Leben ;)!

    Dieser Beitrag wurde bereits 1 Mal editiert, zuletzt von JackV+Z ()

  • Danke erstmal ;) ich werde mich gleich mal schlau machen was es da so gibt ;)


    Also ich hab mal gegooglet und dies gefunden ;)
    Ist eine Anwendung mit Client und Server (hoffe das ist richtig wenn ich beides in einem Programm kombiniere und beim Start dann gucke ob die Instanz die erste Instanz ist (Server) oder eine neue die die Daten übergeben soll (Client)
    Client: Client Interprozesskommunikation
    Server: Server Interprozesskommunikation


    Hoffe echt, dass das Richtige ist ;)


    Danke euch beiden!!! Funktioniert alles Perfekt *-*


    Hier ein kurzer Einblick für die User, die das Selbe wissen wollten:


    Ich habe in meiner Main() das hinein geschrieben:


    Und falls es die erste Instanz ist kommt das im Programm:


    Ps.: Das Process.Kill Zeugs brauche ich nur, weil ich sonst in einer Dauerschleife bleibe und das Programm nicht von alleine schließen will :/ wäre die letzte Kleinigkeit die ich noch überarbeiten müsste ;)

    Leb dein Leben solange es schön ist und lass dir in deine Entscheidungen und Ideen nicht rein reden ;) , denn es ist dein Leben ;)!

    Dieser Beitrag wurde bereits 3 Mal editiert, zuletzt von JackV+Z ()