Einzelnen Beitrag anzeigen

mumu

Registriert seit: 28. Okt 2003
Ort: Bamberg
519 Beiträge
 
#4

Re: mehrere markierte Dateien aus Explorer an Anwendung

  Alt 13. Dez 2005, 07:54
der explorer startet für jede ausgewählte datei eine neue instanz deines programms und übergibt jeweils immer nur eine gewählte datei. Du hast jetzt drei Möglichkeiten das zu verhindern:

1. Du erstellst einen Semaphore (oder ähnliches) beim start deiner ersten instanz und beim start weiterer instanzen kann der semaphore dann nicht noch einmal erstellt werden, weil er ja schon existiert. du sendest mittels SendMessage eine Message mit dem übergebenen Parameter an dein erstes Programm und lässt diese Instanz beenden.

2. Du machst das mittels eines DDE Servers. Ganz einfach in delphi die komponente drauf ziehen, aktivieren und dann bekommst du da alle parameter übergeben.

3. Du machst das mittels ShellExtensions. Da erstellst du eine DLL, die sich ins Kontextmenü einbindet. Hier bist du verdammt flexibel, weil du wirklich alle selektierten Parameter auf einmal auslesen kannst und noch einige andere einstellungen und überprüfungen machen kannst. Bei Delphi 7 wird da ein Beispiel mitgeliefert. Schau mal unter demos im delphi verzeichnis.

Ich hab das selbst auch mal gemacht. als erstes 1., dann 2. und dann 3.
Mein Problem dabei war, dass du bei 1. und 2. die Parameter nach der Reihe geschickt bekommst und nicht weißt, wann der letzte parameter angekommen ist. und ich wollte eben eine funktion ausführen, die aber erst dann startet, wenn ich wirklich alle selectierten dateien von explorer geschickt bekommen hab. und das ging mit 1. und 2. nicht. (oder nur unschön mittels eines timers, jedoch weiß man ja nicht wie ausgelastet der pc ist und wie hoch man den timer setzen muss.
es ist auf jeden fall nicht verkehrt sich mit ShellExtensions aus einander zu setzten.

gruß
  Mit Zitat antworten Zitat