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 Problem mit ShellExecute (https://www.delphipraxis.net/103338-problem-mit-shellexecute.html)

trashcandesign 14. Nov 2007 15:29


Problem mit ShellExecute
 
Hi,

ich hab das ein kleines Problem mit ShellExecute:

Über die Funktion
Delphi-Quellcode:
ShellExecute(Handle, 'open', PAnsiChar(sProgramm), PAnsiChar(sDatei), PAnsiChar(sPfad), SW_SHOWNORMAL)
möchte ich die Datei mit Acrobat, Word, Excel oder sonst was öffnen.
Das funktioniert auch ganz schön, aber sobal in der variablen sDatei, oder sPfad ein Leerzeichen vorkommt kann zb. Word die Datei nicht öffnen.

Wie kann ich die Strings maskieren, dass das funktioniert?

Bernhard Geyer 14. Nov 2007 15:30

Re: Problem mit ShellExecute
 
Anführungszeichen (") am Anfang und Ende ergänzen.

trashcandesign 15. Nov 2007 07:39

Re: Problem mit ShellExecute
 
Mit

Delphi-Quellcode:
ShellExecute(Handle, 'open', PAnsiChar(sProgramm), PAnsiChar(''''+sDatei+''''), PAnsiChar(''''+sPfad+''''), SW_SHOWNORMAL)
hab ich das ganze auch schon versucht -> klappt nicht.

Excel zeigt mir wenigstens an, was er bekommt und auch mit den Anführungsstrichen will er mehrere Dateien öffnen. Sprich wenn ich eigentlich die Datei "A B.xls" öffnen will versucht Excel A.xls und B.xls zu öffnen.

RavenIV 15. Nov 2007 07:56

Re: Problem mit ShellExecute
 
Versuch es mal mit
Delphi-Quellcode:
...(QuotedString(sDatei))...

bitsetter 15. Nov 2007 08:12

Re: Problem mit ShellExecute
 
Hallo,

hast du es mal mit GetShortPathName versucht?
Delphi-Quellcode:
var
  ShortFileName: array [0..MAX_PATH + 1] of Char;
begin
  GetShortPathName(PChar('...'), ShortFileName, MAX_PATH + 1);

trashcandesign 15. Nov 2007 08:41

Re: Problem mit ShellExecute
 
Hi,

Mit QuotedStr hat es auch nicht funktioniert, Excel scheint immer zwei Dateien öffnen zu wollen.

Sorry, ich steh da aufm Schlauch, aber was soll mir GetShortPathName bringen?

RavenIV 15. Nov 2007 08:47

Re: Problem mit ShellExecute
 
Zitat:

Zitat von trashcandesign
Sorry, ich steh da aufm Schlauch, aber was soll mir GetShortPathName bringen?

Damit bekommst Du den Dateinamen, wie er in "8+3"-Notation aussieht.

z.B. "Ein langer Dateiname.txt" => "EINLAN~1.TXT"
Dieser Name ist eindeutig und kann bestimmt auch von dem bescheuerten Excel geöffnet werden.

Mach einfach mal eine DOS-Konsole auf.
Gehe in das Verzeichnis mit der jeweiligen Datei. (cd <PFAD>)
Dann gibst Du ein "DIR /X".

trashcandesign 15. Nov 2007 08:50

Re: Problem mit ShellExecute
 
Ich hab das jetzt mal mit

Delphi-Quellcode:
GetShortPathName(PChar(Datei), ShortFileName, MAX_PATH + 1);
versucht, aber ShortFileName gibt mir dann nichts zurück?!


Mit "dir /x" bekomm ich auch nur 'a b.xls' angezeigt.

RavenIV 15. Nov 2007 08:55

Re: Problem mit ShellExecute
 
Liste der Anhänge anzeigen (Anzahl: 2)
Also bei mir sieht das so aus wie auf den Bildern.

trashcandesign 15. Nov 2007 09:15

Re: Problem mit ShellExecute
 
Autsch, hab in der falschen Spalte geschaut.
Sorry.


Werd ich auch gleich nochmal ausprobieren.

was ich jetzt noch versucht habe ist

Delphi-Quellcode:
ShellExecute(Handle, 'open', PAnisChar(Datei), Pchar(''), PAnsiChar(Datei), SW_SHOWNORMAL)
das funktioniert soweit, aber ich möchte ja die Datei mit einem bestimmten Programm öffnen und nicht nur mit dem Windows-Standard-Programm für den Dateitypen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:21 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