![]() |
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; |
AW: Hat MS die Rückgabewerte von ShellExecute geändert?
Bei mir kommt auch die 42 - mit 'open' als Verb allerdings die 31.
|
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.
|
AW: Hat MS die Rückgabewerte von ShellExecute geändert?
Zitat:
|
AW: Hat MS die Rückgabewerte von ShellExecute geändert?
Zitat:
|
AW: Hat MS die Rückgabewerte von ShellExecute geändert?
Zitat:
Wenn das nicht funktioniert, liegt das daran, dass der Dateityp das Verb open nicht unterstützt. Die meisten Dateitypen kennen das allerdings. |
AW: Hat MS die Rückgabewerte von ShellExecute geändert?
Zitat:
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