Interprocesscommunication?
-
Hi,
Ich suche ein geeignetes Mittel um mein Probelm, das höchstwahrscheinlich mit IPC zu tun hat (möglicherweise gibts aber auch einen viel einfacheren Weg), zu lösen.um meine Frage zu erklären, muss ich ein wenig weiter ausholen:
Ich habe ein Programm, dass über die Registry ([HKEY_CLASSES_ROOT\Directory\shell\Foo]) in das (Explorer) Kontextmenu von Dateien eingebunden wird und bei Aufruf den Pfad zu der Datei bekommt.Jetzt möchte ich aber in dem Fall, dass mehrere Dateien markiert wurden, all deren Pfade bekommen. Pro markierter Datei wird aber eine Instanz des Programms gestartet.
hier sehe 2 Prinzipielle Lösungsmöglichkeiten:
- Windows(/Explorer) beibringen, dass nicht je eine Instanz gestartet werden soll, sondern nur eine, die alle Pfade bekommt.
- Irgende eine Art der IPC
Zu 1)
wenn hier jemand weiß, wie das geht, dann wäre ich für einen Hinweis dankbarZu 2) der wahrscheinlich einfachere Weg:
nur welches Mittel ist hier das geeignetste?
Das ganze sollte auch mit >100 selektierten Datein funktionieren.- Sockets? scheint mir Overkill zu sein, vor allem, woher weiß das Programm, dass es das erste ist, oder wann keine anderen mehr kommen?
- DDE? hab ich keine Ahnung, wär das dafür geeignet? Scheint nicht so großer overhead, wie Sockets zu sein. Selbe Probleme, wie beim ersten
- Clipboard? App kopiert Daten in Clipboard (ist sowieso das Endziel). weitere instanzen warten, bis wieder freigegeben und hängne ihre Daten an --> implizite Synchronisation
was würdet ihr macht, oder gibts ne Lösung für Variante 1). Ich meine: Pack-Programme kriegen das ja auch irgendwie hin, dass sie alle markierten Verzeichnisobjekte auf einmal bekommen.
Danke im Voraus
Vlad
-
Du hast vermutlich Deine Anwednung als SDI gebaut.
Du musst diese als MDI umbauen und entsprechende DDE Befele für den open unterstützen.Am einfachsten geht das sicherlich mit der MFC

-
Martin Richter schrieb:
Du hast vermutlich Deine Anwednung als SDI gebaut.
Du musst diese als MDI umbauen und entsprechende DDE Befele für den open unterstützen.Am einfachsten geht das sicherlich mit der MFC

Ach Sorry, das habe ich nicht erwähnt:
das Programm ist fenster- und konsolenlos.
eine win32-Anwendung, die kein Fenster erzeugt.
-
vlad_tepesch schrieb:
Martin Richter schrieb:
Du hast vermutlich Deine Anwednung als SDI gebaut.
Du musst diese als MDI umbauen und entsprechende DDE Befele für den open unterstützen.Am einfachsten geht das sicherlich mit der MFC

Ach Sorry, das habe ich nicht erwähnt:
das Programm ist fenster- und konsolenlos.
eine win32-Anwendung, die kein Fenster erzeugt.Falls es nur um ein fehlendes Fenster geht:
Mach einfach eins das versteckt ist. Das macht z.B. COM auch so um die Aufrufe auf den korrekten Thread zu marshallen.