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

markus5766h 7. Jan 2017 11:11

ShellExecute Problem mit zweitem Parameter
 
Moin zusammen.

Ich habe derzeit einige Probleme mit ShellExexcute :

1)
Code:
procedure TfrmMain.OpenMedia(Media: String);
var
  n : Integer;
  sFile : String;
  err : Integer;
begin
  err := 63;
  err := ShellExecute(Handle, 'open', PChar(Media), nil, nil, SW_SHOWNORMAL);
  if err <= 32  then ShowMessage(ShellExecuteErrMsg(err));
end;
obige Prozedur läuft ohne Probleme, Datei wird mit der dazugehörigen Anwendung geöffnet.

2)
Code:
procedure TfrmMain.OpenMediaWithApplication(Media, Application: String);
var
  n : Integer;
  sFile : String;
  err : Integer;
begin
  err := 63;
  err := ShellExecute(Handle, 'open', PChar(Application), PChar(Media), nil, SW_SHOWNORMAL);
  if err <= 32  then ShowMessage(ShellExecuteErrMsg(err));
  ShowMessage(IntToStr(err)); // <--- Rückgabewert ist 42
end;
Media :
M:\DB_MED\MediaFiles\Video\Incognito_JapanTour2012 .avi

übergebe ich die Anwendung, mit der die Datei (Media) geöffnet werden soll im ersten Parameter
und den Dateinamen im zweiten Parameter, bekomm' ich einen Rückgabewert von 42 (kein Fehler),
der Dateiname des zweiten Parameters scheint aber bei der Anwendung nicht anzukommen:
bsp. MediaPlayer oder VLC MediaPlayer --> beide können die Datei nicht öffnen, lt. Fehlermeldung
weist die Datei eine unbekannte Fehlermeldung auf (ist aber *.avi, mehrfach kontrolliert).
Media ist die gleiche Datei wie auch in der ersten Prozedur benutzt.

Weiß jemand Rat ?

BS : Win10 und Win7, beide 64Bit, gleiches Ergebnis.

juergen 7. Jan 2017 11:21

AW: ShellExecute Problem mit zweitem Parameter
 
Hallo,

ich hatte auch mal ein Problem mit ShellExexcute() wo bestimmte Dateien nicht aufgerufen wurden. Nachdem ich den Dateinamen in Anführungszeichen gesetzt hatte habe ich das Problem nicht mehr.
Delphi-Quellcode:
PChar('"' + Media + '"')
Ob das jetzt dein Problem löst vermag ich nicht zu sagen, da ich auch nicht weiß was genau sich hinter
Zitat:

Media
verbirgt.

markus5766h 7. Jan 2017 11:26

AW: ShellExecute Problem mit zweitem Parameter
 
@ juergen,

danke, das war's . . .
vielleicht weiß ja noch jemand den Hintergrund . . .

nahpets 7. Jan 2017 11:34

AW: ShellExecute Problem mit zweitem Parameter
 
Parameter werden durch Leerzeichen getrennt. Enthält ein Dateiname Leerzeichen, so wird er wie entsprechend viele Parameter behandelt.

Dateinamen mit Leerzeichen muss man in Hochkommata setzen. Das ist eigentlich der Fall, seit dem Windows bei Dateinamen mehr als 8.3 zulässt. (War das Windows 95 bzw. Windows NT?)

markus5766h 7. Jan 2017 11:46

AW: ShellExecute Problem mit zweitem Parameter
 
... daran hab' ich auch schon gedacht, und Leerzeichen durch Unterstriche ersetzt, das Ergebnis war allerdings das Gleiche,
und Unterstriche sind meines Wissens in Dateinamen erlaubt . . .

nahpets 7. Jan 2017 11:56

AW: ShellExecute Problem mit zweitem Parameter
 
Zeig' doch bitte mal den konkreten Inhalt von Media, so kann man doch nur spekulieren.

markus5766h 7. Jan 2017 12:02

AW: ShellExecute Problem mit zweitem Parameter
 
Media-Inhalt (ein Beispiel) im ersten Post

t.roller 7. Jan 2017 12:17

AW: ShellExecute Problem mit zweitem Parameter
 
In
M:\DB_MED\MediaFiles\Video\Incognito_JapanTour2012 .avi
ist ein SPACE vorhanden.

markus5766h 7. Jan 2017 12:27

AW: ShellExecute Problem mit zweitem Parameter
 
Zitat:

Zitat von t.roller (Beitrag 1358308)
In
M:\DB_MED\MediaFiles\Video\Incognito_JapanTour2012 .avi
ist ein SPACE vorhanden.

o.k., entdeckt, danke, dann erklärt sich das . . .

HolgerX 7. Jan 2017 14:04

AW: ShellExecute Problem mit zweitem Parameter
 
Hmm..

Zitat:

Zitat von markus5766h (Beitrag 1358296)
Moin zusammen.

Media :
M:\DB_MED\MediaFiles\Video\Incognito_JapanTour2012 .avi

Ist da zwischen 'JapanTour2012' und '.avi' ein Leerzeichen dazwischen?
Dann ist der Fehler gefunden... ;)


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