Daten per Kontextmenü ans Programm übergeben Verfasst am: 05.05.2008, 20:08
Hi Leute,
Ja auch mal ne Frage von mir. Ich hoffe es hatte schonmal jemand das Problem und weiß ne Lösung.
Also. Ich lasse in der Registry für mein Prog einen Eintrag erstellen damit man leicht übers Kontextmenü Dateien übergeben kann.
Der Eintrag besteht aus dem Pfad zum Programm und " %1" hinten drann. Durch %1 weiß Windows, dass es den Pfad der angeklickten Datei ans Programm übergeben soll.
Problem: Es wird immer nur ein Pfad übergeben. Wenn ich mehrere Dateien markiere wird das Programm auch so oft gestartet.
Ich hab einiges gelesen im Inet was aber totaler Schwachsinn war. Z.B. %2-%9 einzugeben. Funktioniert nicht und wäre iwie auch bescheuert da die Anzahl der files die man übergeben kann begrenzt wäre.
Oder %*. Sieht ja schon besser aus, funktioniert aber auch garnicht^^
Naja. Vielleicht weiß das jemand oder es hat jemand ne Idee wie man das umgehen kann. Lustigerweise gibt es kein Problem wenn man die Dateien einfach über die exe des Programmes zieht. _________________
Marduk Überflieger
Anmeldedatum: 16.04.2008 Beiträge: 374
Verfasst am: 05.05.2008, 21:12
Ich kenn jetzt keine Lösung zu deinem Problem, aber hab einen Workaround der u.U auch nicht funktioniert
Du sagst ja, dass dein Programm bei mehreren markierten Dateien genauso oft ausgeführt wird. Dein Programm erkennt sicherlich, ob und wann es mit diesen externen Paramtern gestartet wird. In einer solchen Situation köntest anstatt der Verarbeitung der Pfade erst einmal die Pfade in einer Datei zwischenspeichern. Zudem würde jede offene Instanz deines Programms die aktuelle Instanzenanzahl deines Programms ermitteln und mit speichern. Die nächste Instanz speichert dann auch den Pfad in der Datei und prüft erst, wieviele Instanzen die vorherige Instanz erkannt hat. Hat die Vorherige nur noch eine (also die letzte) Instanz erkannt, dann würde die aktuelle/letzte die ganzen Pfade laden (und den eigenen) und würde sie deinem Programm übergeben.
Hoffe ich habs verständlich rübergrbracht. Ist halt keine ideale Lösung, sollte aber theoretisch funktionieren (in meinem Kopf ).
MfG Marduk
ZiG Überflieger
Anmeldedatum: 16.04.2008 Beiträge: 421
Verfasst am: 05.05.2008, 21:13
Jop, hatte ich mir auch schon so ähnlich gedacht. Hatte aber auf ne einfache Version gehofft^^
Marduk Überflieger
Anmeldedatum: 16.04.2008 Beiträge: 374
Verfasst am: 05.05.2008, 21:17
Hmm, mir fällt auf die Schnelle nichts einfacherers ein. Ausser es würde irgendwie mit %1... funktionieren. Soll das Programm denn mit vielen Dateien arbeiten, dass es bei der Methode sehr langsam geht, oder werden es wenige Dateien sein, die man so öffnet/verarbeitet?
ZiG Überflieger
Anmeldedatum: 16.04.2008 Beiträge: 421
Verfasst am: 05.05.2008, 21:23
Ist ein einfacher Fileshredder dem man die Dateien halt per Kontextmenü übergeben kann.
Können also auch sehr viele sein.
exe-cute Newbie
Anmeldedatum: 03.05.2008 Beiträge: 7
Verfasst am: 05.05.2008, 21:48
Habe mich vor ein paar tagen auch mit dem Kontextmenü beschäftigt. Das kontextmenü von z.B. winrar steht glaube ich garnicht in der Registry. Es ist der eintrag zu der dll(C:ProgrammeWinRARrarext.dll) vorhanden. Vieleicht liegen die Menü's in der dll.
So können die Parameter eventuell nach einem eigenem system übergeben werden.
e:\google an erster stelle hilft einem auch nicht weiter
ZiG Überflieger
Anmeldedatum: 16.04.2008 Beiträge: 421
Verfasst am: 05.05.2008, 21:57
Jop das mit winrar bzw. anderen Progs kenne ich. Damit könnte man dann sogar ein Untermenü realisieren.
Die Idee wie es VLC macht ist nicht schlecht, aber da gibts das Problem, dass der wenn er startet die volle Anzahl der Files anzeigen soll und dann auch gleich läuft wenn man auf Ja klickt. Wenn dann erst von anderen Instanzen die Files übergeben werden, bringst nichts mehr.
Naja thx. Ich werd mal rumprobieren wie ich das im Programm und der Instanzen Erkennung umsetzen kann.
DFJ Tutorial Leser
Anmeldedatum: 01.05.2008 Beiträge: 39
Verfasst am: 06.05.2008, 12:19
ich musst erst mal überlegen was du meintes , dann habe ich es verstanden du willst ein sagen wir eine anwendung schreiben die mehre pfade auf nimmt von verschieden datein , also sagen wir du makiert jetzt 5 datei und von den 5 datei willst du die pfade haben , das problem was du hast ist das du nur ein pfade bekommt nicht 5 richtig `?