AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi "Öffnen mit..." mit mehreren Dateien
Thema durchsuchen
Ansicht
Themen-Optionen

"Öffnen mit..." mit mehreren Dateien

Offene Frage von "Dunkel"
Ein Thema von Dunkel · begonnen am 6. Dez 2007 · letzter Beitrag vom 24. Dez 2007
Antwort Antwort
Benutzerbild von Dunkel
Dunkel

Registriert seit: 26. Mär 2007
Ort: Klingenstadt
541 Beiträge
 
Delphi 2007 Enterprise
 
#1

"Öffnen mit..." mit mehreren Dateien

  Alt 6. Dez 2007, 00:28
Hallo zusammen!

Ich versuche gerade mit meiner Applikation den Windows-Dialog "Öffnen mit..." zu nutzen. Das funktioniert auch wunderbar mit nur einer Datei. Jetzt möchte ich aber mehr als nur eine Datei der via Dialog ausgewählten Applikation übergeben.

Delphi-Quellcode:
procedure OpenWith(aFileList: TTNTStringList);
var
 Param: widestring;
 WStr: widestring;
 i: word;
begin
  if aFileList.Count = 0 then
    exit;
  WStr:= '';
  for i := 0 to aFileList.Count - 1 do
    WStr:= WStr + ',' + aFileList[i];
  Param:= 'shell32.dll,OpenAs_RunDLL '+WStr;
  ShellExecuteW(Application.Handle,'open','rundll32.exe',
                PWideChar(Param),
                nil, SW_SHOWNORMAL);
end;
Komma-separiert wird nur die letzte Datei berücksichtigt, in Anführungszeichen eingeschlossen funktioniert es garnicht.
Edit: Komma-separiert funktioniert es ebenfalls nicht, der Applikation wird der komplette zusammengesetzte String (WStr) übergeben => ungültige Datei.

Hat jemand einen Tipp für mich wie das funktionieren könnte? Ich habe irgendwie aber das dumme Gefühl, dass sowas überhaupt nicht geht. Auch im Windows-Explorer wird bei mehrerern ausgewählten Dateien nur die letzte an das jeweilige Programm übergeben.

Vielen Dank im Voraus für sachdienliche Hinweise.
Es ist zu wahr um schön zu sein...
  Mit Zitat antworten Zitat
gmc616

Registriert seit: 25. Jun 2004
Ort: Jena
627 Beiträge
 
Delphi 10.3 Rio
 
#2

Re: "Öffnen mit..." mit mehreren Dateien

  Alt 6. Dez 2007, 01:34
Ich denke erst am kommt es darauf an wie das gerufene Programm die Parameter entgegen nimmt.
Ob die rundll32.exe mehrere Dateien (komma-separiert oder nicht) akzeptiert weiß ich nicht, nach deiner Beschreibung her wohl eher nicht.

Warum rufst du nicht ich der Gleichen schleife für jede einzelne Datei die rundll32.exe?

Delphi-Quellcode:
for i := 0 to aFileList.Count - 1 do
begin
  WStr:= aFileList[i];
  Param:= 'shell32.dll,OpenAs_RunDLL '+WStr;
  ShellExecuteW(Application.Handle,'open','rundll32.exe',
                PWideChar(Param),
                nil, SW_SHOWNORMAL);
end;
sollte doch das gleiche bewirken, oder?
  Mit Zitat antworten Zitat
Benutzerbild von Dunkel
Dunkel

Registriert seit: 26. Mär 2007
Ort: Klingenstadt
541 Beiträge
 
Delphi 2007 Enterprise
 
#3

Re: "Öffnen mit..." mit mehreren Dateien

  Alt 6. Dez 2007, 01:58
Warum ich nicht das mache was Du vorschlägst? Weil dann für jede Datei der "Öffnen mit..."-Dialog aufgerufen wird; ziemlich doof bei mehr als n Dateien (n ist beliebig, fängt aber schon bei 1 an ). Danke trotzdem!

Ich glaube so langsam, nachdem ich jetzt schon mehrere Stunden daran rumbastle, dass ich mir das Drag&Drop-Verhalten entsprechend modifizieren muss, um das von mir gewünschte Verhalten zu erhalten.
Es ist zu wahr um schön zu sein...
  Mit Zitat antworten Zitat
gmc616

Registriert seit: 25. Jun 2004
Ort: Jena
627 Beiträge
 
Delphi 10.3 Rio
 
#4

Re: "Öffnen mit..." mit mehreren Dateien

  Alt 6. Dez 2007, 02:56
OpenAs_RunDLL bzw. 'Öffnen mit ...' ... Sorry hab ich überlesen. Kann einem zu so später Stunde durchaus mal passieren.

Ich denke, das was du vorhast, geht nicht. Der MS-Explorer kriegt das auch nicht auf die Reihe (zu mindest in meinem XP nicht).

Auch MSDN schreibt nur von einer(!) Datei. Von mehreren Dateien könnte ich auch nix finden.

Vielleicht lässt sich ermitteln, mit welchen Anwendungen die Dateitypen bisher geöffnet wurden, und diese Anwendungen als quasi eigenen "Öffnen mit ..."-Dialog zur Auswahl bringen ... nur so als Idee.
  Mit Zitat antworten Zitat
Benutzerbild von Dani
Dani

Registriert seit: 19. Jan 2003
732 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: "Öffnen mit..." mit mehreren Dateien

  Alt 6. Dez 2007, 04:27
Oh Gott ich muss ins Bett...

Aber mal davon abgesehen, dass ich die Frage falsch verstanden hab: kannst du nicht irgendwie feststellen, was der Benutzer da ausgewählt hat und dann für alle Dateien mit der gleichen Endung diese Anwendung aufrufen?
Dani H.
At Least I Can Say I Tried
  Mit Zitat antworten Zitat
Benutzerbild von Dunkel
Dunkel

Registriert seit: 26. Mär 2007
Ort: Klingenstadt
541 Beiträge
 
Delphi 2007 Enterprise
 
#6

Re: "Öffnen mit..." mit mehreren Dateien

  Alt 6. Dez 2007, 22:56
Zitat von Dani:
kannst du nicht irgendwie feststellen, was der Benutzer da ausgewählt hat und dann für alle Dateien mit der gleichen Endung diese Anwendung aufrufen?
Spontan wüsste ich nicht, wie ich das feststellen könnte. MSDN, PSDK, Google, ... , nirgends konnte ich einen Anhaltspunkt finden, wie bzw. ob der aufrufende Prozess vom "Öffnen mit..."-Dialog eine entsprechende Rückmeldung bekommt.
Eine Quick&(very)Dirty-Methode wäre es, die Prozessliste vor dem Aufruf und nach dem Aufruf zu vergleichen; ist aber nicht wirklich das Wahre.
Was auch funktionieren könnte ist sich das Handle vom Dialog zu holen und zu versuchen irgendwelche Informationen zu bekommen.

Hmm... so langsam finde ich mich damit ab, dass das nicht funktionieren wird.
Es ist zu wahr um schön zu sein...
  Mit Zitat antworten Zitat
Benutzerbild von Dunkel
Dunkel

Registriert seit: 26. Mär 2007
Ort: Klingenstadt
541 Beiträge
 
Delphi 2007 Enterprise
 
#7

Re: "Öffnen mit..." mit mehreren Dateien

  Alt 23. Dez 2007, 23:47
*den Flaschenzug ansetz und den Thread nach oben zieh*

Bietet Windows wirklich keine Möglichkeiten sowas zu machen? Mit einem "Nein" wäre mir auch schon geholfen; dann hätte ich zumindest einen triftigen Grund an meiner Self-Made-Lösung intensiver zu werkeln.
Es ist zu wahr um schön zu sein...
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.117 Beiträge
 
Delphi 11 Alexandria
 
#8

Re: "Öffnen mit..." mit mehreren Dateien

  Alt 24. Dez 2007, 00:29
Moin Dunkel,

eine Quelle für ein definitives "Nein, geht nicht" kann ich Dir zwar leider auch nicht liefern, aber warum sollte das gehen?
Der "Öffnen mit"-Dialog dient ja, in erster Linie, einfach nur dazu Dateitypen leicher assoziieren zu können, und das macht man, i.d.R., ja nicht mit mehreren gleichzeitig.

Schau Dir mal den Inhalt von
HKEY_CLASSES_ROOT\Unknown\shell\openas\command
an. Es wird nur ein Dateipfad übergeben (eine Änderung des Parameters %1 ändert hier auch nichts)
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Benutzerbild von Dunkel
Dunkel

Registriert seit: 26. Mär 2007
Ort: Klingenstadt
541 Beiträge
 
Delphi 2007 Enterprise
 
#9

Re: "Öffnen mit..." mit mehreren Dateien

  Alt 24. Dez 2007, 00:40
Hallo Christian!

Eine (weitere) Antwort mit einem "fast-Nein" reicht mit jetzt aber zur Erkenntnis, dass mein Vorhaben, mit Windows-API-Mitteln, nicht machbar ist. Danke!

Dann werde ich wohl doch ein wenig mehr Zeit mit der Registry (Herr Gott, ist das Dingen fies und undurchsichtig) und meiner darauf aufbauenden Self-Made-Lösung verbringen (müssen). Meine dabei gewonnenen Erkenntnisse werde ich hier bei Zeiten veröffentlichen.

Weihnachtliche Grüße!
Es ist zu wahr um schön zu sein...
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:17 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz