Visual Basic Forum

Visual Basic Forum
für VB6 und VB.NET Programmierer
 
RegistrierenRegistrieren  LoginLogin

Neues Thema eröffnen   Neue Antwort erstellen    Visual Basic Forum Foren-Übersicht -> [VB6] Fragen - Antworten
Autor
Nachricht
ZiG
Überflieger
Überflieger

Anmeldedatum: 16.04.2008
Beiträge: 421

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
Ü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 Very Happy

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 Very Happy).

MfG
Marduk
 
ZiG
Überflieger
Ü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
Ü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
Ü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
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 Very Happy
 
ZiG
Überflieger
Ü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
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 Smile 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 `?

1.gibt es keine api/windows funktion welche überprüft welche datei makiert ist ?
2. Könnes nicht einfach mit Command dialogen machen
http://www.wer-weiss-was.de/theme161/article3729985.html


das sind meine ideen
_________________


 
ZiG
Überflieger
Überflieger

Anmeldedatum: 16.04.2008
Beiträge: 421


Verfasst am: 06.05.2008, 12:48


Ja Common Dialog ist sowieso noch eingebaut.
Aber Dateien will man schnell löschen, also über Kontextmenü.

Aber thx für die Idee zu überprüfen welche Dateien markiert sind. Evt. finde ich da was.
 
Neues Thema eröffnen   Neue Antwort erstellen    Visual Basic Forum Foren-Übersicht -> [VB6] Fragen - Antworten

Tags: kontextmenü dateien, dateien übergeben, programm übergeben

 
 Verwandte Themen   Aufrufe   Letzter Beitrag 
Keine neuen Beiträge Wichtig: Filebrowser z.B. für ein RAT 2118 13.01.2008, 11:14
Keine neuen Beiträge msgbox mit symbol _&_ z.B. yesno oder systemmodal 1078 26.09.2008, 23:16
Keine neuen Beiträge Abändern eines Ordnernamens (z.B. C:\Programme = Programme) 1196 23.04.2008, 15:33
Keine neuen Beiträge "Zurück-Funktion" mit Listview und z.B. DirView 734 17.04.2008, 13:30
Keine neuen Beiträge Fenster auslesen z.b von icq oder msn wer online kommt 1224 11.02.2008, 16:46
 



[ Time: 0.3479s ][ Queries: 115 (0.0379s) ][ GZIP on - Debug on ]