Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Hat MS die Rückgabewerte von ShellExecute geändert? (https://www.delphipraxis.net/176097-hat-ms-die-rueckgabewerte-von-shellexecute-geaendert.html)

BlueStarHH 12. Aug 2013 12:21

Hat MS die Rückgabewerte von ShellExecute geändert?
 
Wenn mit ShellExecute eine Datei geöffnet werden soll, für die kein verknüpftes Programm existiert wurde bisher immer eine 31 (SE_ERR_NOASSOC) zurückgegeben. Das war jahrelang so. Nun habe ich entdeckt, dass die Funktion statt der 31 eine 42 zurückgibt (Win7, 32bit). Warum? Die Doku von MS kennt davon nichts. Kann das mal bitte jemand testen?


Delphi-Quellcode:
//uses ShellAPI
var
  FileName: string;
begin
  FileName := 'E:\blubb.xyz';
  if not FileExists(FileName) then
    MessageDlg('Datei exisitert nicht', mtError, [mbOK], 0)
  else
    showmessage(IntToStr(ShellExecute(0, nil, @FileName[1], nil, nil, 1)));
end;

uligerhardt 12. Aug 2013 12:35

AW: Hat MS die Rückgabewerte von ShellExecute geändert?
 
Bei mir kommt auch die 42 - mit 'open' als Verb allerdings die 31.

jaenicke 12. Aug 2013 13:09

AW: Hat MS die Rückgabewerte von ShellExecute geändert?
 
Es ist ja auch keine Idee bei der Operation was gemacht werden soll nil, also nichts, anzugeben. Dann kann open benutzt werden, muss aber nicht. Wenn der Benutzer etwas anderes als default eingestellt hat (denn laut Doku wird das default verb dann benutzt), funktioniert es schlicht nicht.

BlueStarHH 12. Aug 2013 15:56

AW: Hat MS die Rückgabewerte von ShellExecute geändert?
 
Zitat:

Zitat von jaenicke (Beitrag 1224454)
Es ist ja auch keine Idee bei der Operation was gemacht werden soll nil, also nichts, anzugeben. Dann kann open benutzt werden, muss aber nicht. Wenn der Benutzer etwas anderes als default eingestellt hat (denn laut Doku wird das default verb dann benutzt), funktioniert es schlicht nicht.

Das einzige, was zuverlässig Dateien öffnet, ist leider "nil" als Operation. Das habe ich nach x-Jahren Support-Anrufen in der Art "Es wird nichts geöffnet" feststellen müssen. Auch in diversen Foren und Newsgroup-Post wird nil empfohlen.

BlueStarHH 12. Aug 2013 15:57

AW: Hat MS die Rückgabewerte von ShellExecute geändert?
 
Zitat:

Zitat von uligerhardt (Beitrag 1224446)
Bei mir kommt auch die 42 - mit 'open' als Verb allerdings die 31.

Danke für den Hinweis auf "open".

jaenicke 12. Aug 2013 16:15

AW: Hat MS die Rückgabewerte von ShellExecute geändert?
 
Zitat:

Zitat von BlueStarHH (Beitrag 1224482)
Das einzige, was zuverlässig Dateien öffnet, ist leider "nil" als Operation. Das habe ich nach x-Jahren Support-Anrufen in der Art "Es wird nichts geöffnet" feststellen müssen. Auch in diversen Foren und Newsgroup-Post wird nil empfohlen.

Stellt der Benutzer den Standard aber auf print wird dann immer gedruckt. ;-)

Wenn das nicht funktioniert, liegt das daran, dass der Dateityp das Verb open nicht unterstützt. Die meisten Dateitypen kennen das allerdings.

musicman56 12. Aug 2013 22:48

AW: Hat MS die Rückgabewerte von ShellExecute geändert?
 
Zitat:

Zitat von uligerhardt (Beitrag 1224446)
Bei mir kommt auch die 42 - mit 'open' als Verb allerdings die 31.

Bei mir kommt bei nil und bei 'open' 42

Win7-64 und XE2


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:03 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz