Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi "Senden an" mit langen Dateinamen (https://www.delphipraxis.net/76631-senden-mit-langen-dateinamen.html)

c.kauer 7. Sep 2006 09:02


"Senden an" mit langen Dateinamen
 
Hi Leute,

ich habe eine Problem:

Mein Programm soll mit einer Liste von Dateinamen via Parameter gestartet werden. Der User wählt im Explorer Dateien aus, und soll dann via "Senden an" Menü das Programm starten können.

Das funzt so weit auch.

Doch leider werden Teile von Dateinamen, die ein Leerzeichen enthalten als separate Parameter übergeben.

Weiß jemand wie ich es hinbekommen, dass solche Parameter in Anführungszeichen übergeben werden?

Vielen Dank im voraus!!!

Klaus01 7. Sep 2006 09:23

Re: "Senden an" mit langen Dateinamen
 
Wenn Deinem Programm nur ein Parameter übergeben wird,
kannst Du doch mit ParamCount die Anzahl der Parameter ermitteln
Falls es mehr als ein Parameter sind weißt Du das ein langer Dateiname mit Leerzeichen
übergeben wurde.

Den Dateinamen kannst Du dann aus den Parametern rekonstruieren.

Ob es einen einfacheren Weg gibt, weiß ich nicht.

Grüße
Klaus

c.kauer 7. Sep 2006 09:52

Re: "Senden an" mit langen Dateinamen
 
Desshalb schrieb ich "Liste von DateinamEN"

Bei einer Datei wäre das kein Problem; zugegeben, bei mehreren könnte ich mir die Dateinamen wohl auch zusammenbasten.

Aber gibt es keine elegantere Lösung?

Steve 7. Sep 2006 10:15

Re: "Senden an" mit langen Dateinamen
 
Hi,

also ich hab das eben mal nachgebastelt und bei mir funzt das ohne Probleme:

Delphi-Quellcode:
For ii:=1 to ParamCount do
  ListBox1.Items.Add(ParamStr(ii));
In jeder Zeile ein Dateiname, auch inkl. Leerzeichen... Alles fehlerfrei :gruebel:

Habs mit Delphi 5 auf Win XP SP2 getestet...
Evtl. liegt der Fehler woanders?


Gruß
Stephan :dance:

c.kauer 7. Sep 2006 11:58

Re: "Senden an" mit langen Dateinamen
 
Das kann ich fast schon nicht glauben:

Prog mit genau den 2 CodeZeilen, dann unter run Params c:\Langer Dateiname 1.0.3.pdf eintragen und in der Listbox sind 3 Einträge:

C:\Langer
Dateiname
1.0.3.pdf


Die Lösung wird irgendwo da liegen, das Windows die Dateinamen mit Anführungszeichen an das Programm übergibt, ich weiß nur nicht wie.


Grüße!!!

Klaus01 7. Sep 2006 12:04

Re: "Senden an" mit langen Dateinamen
 
Ob sich das auch bei SendTo auswirkt weiß ich nicht.
Aber ist vielleicht einen Versuch wert?

Grüße
Klaus

Zitat:

Am 15.06.2004 15:05 tippte Gernot Wassmer in seine Tastatur:


> Ich will per Doppelclick im Explorer mein Programm mit
> der Datei, auf die ich doppelklicke, öffnen. Das funktioniert
> auch prima mit System.ParamStr(1) und einem entsprechenden
> Eintrag im registry HKEY_CLASSES_ROOT mit
> \shell\open\command .
> Problem sind lange Dateinamen (der Name der geöffneten
> Datei wird benötigt). Ich bekomm nur die verkürzte Version,
> auch wenn ich \shell\open\comman\myprogram.exe "%1"
> (d.h. mit " ") angebe.
> Kennt das jemand und weiss Abhilfe?

> Danke für jede Hilfe


> Gernot



Probier doch mal, \shell\open\comman\myprogram.exe "%L" in der Registry
einzutragen. Damit sollte dann der *vollständige* _Lange_ Pfad übergeben
werden.

Christian Seehase 7. Sep 2006 12:06

Re: "Senden an" mit langen Dateinamen
 
Moin c.kauer,

oben schreibst Du, dass das Problem auftritt, wenn Du die Daten per "Senden an" an das Programm geschickt werden, und jetzt gibst Du als Beispiel an, dass man es als Parameter in Run eintragen soll.

Dann mache mal "" um den Parameter in Run, und anschliessend probiere es mal direkt mit Senden an.
Windows macht das schon richtig, nur beim Run-Parameter musst Du es selber machen ;-)

c.kauer 7. Sep 2006 12:24

Re: "Senden an" mit langen Dateinamen
 
Windows macht es eben nicht richtig, zumindest nicht wenn ich den "Senden An" Link selbst erzeuge.

Mit dem Beispiel (Parameter unter Run eintragen) wollte ich nur zeigen, dass Steve nicht rechthaben kann. Das hat aber eigentlich nichts mit meiner Problematik zu tun.


@Klaus01:

Das Problem ist, dass mein Prog über eine .lnk Datei geöffnet wird, die im "Senden an" Ordner liegt. Dazu gibt es keinen Registry Eintrag. Aber ich denke ich werde das Problem lösen, indem ich einen neuen Popupmeneintrag in der Registry anlge und nicht mit "senden an" arbeite.

Danke



Gruß

Christian Kauer

Christian Seehase 7. Sep 2006 12:31

Re: "Senden an" mit langen Dateinamen
 
Moin Christian,

seltsam...
Wenn ich eine oder mehrere Dateien über "Senden an" übergebe funktioniert das problemlos, nur wenn ich den Namen mittels des Run-Parameters übergebe funktioniert es nicht richtig.
:gruebel:


Welche Delphi-Version, und welche Windows-Version verwendest Du?

c.kauer 7. Sep 2006 12:39

Re: "Senden an" mit langen Dateinamen
 
Moin Christian,

wie erzeugst du denn "Senden an"-Link? Mit IShellLink?

Vielleicht mache ich dabei etwas falsch.

Nachtrag:
Ich wollte mal einen Link den ich automatisch erzeuge mit einer manuellen Verknüpfung vergleichen. Kann man die lnks überhaupt irgendwie anschauen? Ultra Edit öffnen sofort die Verknüpfte Datei.

Gruß


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:35 Uhr.
Seite 1 von 2  1 2      

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