ShellExecute 42, GetLastError 126
Hallo,
folgender Code funktioniert plötzlich nicht mehr, d.h. der für Txt hinterlegte Editor (notepad.exe) wird nicht gestartet.
Delphi-Quellcode:
hInst=42
var
sDateiName: String; hInst: Integer; iError: Integer; begin sDateiName:= 'C:\Temp\Log.txt'; // nur zum Testen if FileExists(sDateiName) then begin hInst := ShellExecute(0, nil, PChar(sDateiName), '', nil, 0); iError := GetLastError; end; iError=126 Was ist das denn? |
AW: ShellExecute 42, GetLastError 126
Zitat:
Wo ist dein Problem? |
AW: ShellExecute 42, GetLastError 126
Geht es um die Antwort auf die Frage nach dem Leben, dem Universum und dem ganzen Rest? :wink:
|
AW: ShellExecute 42, GetLastError 126
Hallo,
der Editor wird nicht gestartet. |
AW: ShellExecute 42, GetLastError 126
Schau doch noch mal genau in die Doku zu ShellExecute :warn:
Auflösung: Du gibst ja auch einen Parameter (leerer String statt nil) an. Das bedeutet implizit dass deine .txt-Datei eine Anwendung wäre. Zitat:
|
AW: ShellExecute 42, GetLastError 126
Wird er nicht gestartet, oder siehst Du ihn nur nicht? Du gibst als nShowCmd 0 an, was SW_HIDE entspricht.
|
AW: ShellExecute 42, GetLastError 126
Hallo,
Zitat:
Zitat:
Ich Dussel. Interessanterweise ignoriert der Acrobat-Reader bei PDFs meinen Parameter. |
AW: ShellExecute 42, GetLastError 126
Zitat:
|
AW: ShellExecute 42, GetLastError 126
Acrobat ignoriert bösartig noch viel mehr.
.Enabled bei der ActiveX-Komponente und die Sidebars werden auch mit vorliebe angezeigt, auch wenn man das immer wieder deaktiviert, also niemals dessen Verhalten als Referenz nutzen. In Delphi entsprechen die leeren Strings ( '' ) einem NIL. Mit Ausnahme von PChar-Casts, welche das auf einen Dummystring mit zwei NULL ( #0#0 ) umleiten. |
AW: ShellExecute 42, GetLastError 126
Zitat:
Delphi-Quellcode:
, bevor du
hInst
Delphi-Quellcode:
auswertest? Im Erfolgsfalle ist der Wert von GetLastError nämlich immer undefiniert.
iError
|
AW: ShellExecute 42, GetLastError 126
Zitat:
Der Wert passt ja definitiv zum letzten Fehler, irgendeiner vorher aufgerufenen WinAPI-Funktion, bzw. vom letzten SetLastError. |
AW: ShellExecute 42, GetLastError 126
Zitat:
Delphi-Quellcode:
!= 0 prüft, gibt es massive Probleme.
GetLastError
|
AW: ShellExecute 42, GetLastError 126
Man kann vorher auch SetLastError benutzen um das zu vermeiden.
|
AW: ShellExecute 42, GetLastError 126
Zitat:
Laut Definition gibt diese API nur einen LastError zurück, wenn das Result sagt, dass was kaputt ist. Jetzt kann diese API aber intern weitere APIs aufrufen und Diese auch usw. Aber nur weil eine der internen APIs einen Fehler meldete, heißt das noch lange nicht, dass "unsere" API auch 'nen Fehler liefert. (die kann ja intern noch einen alternativen Weg gehen, oder so) Tja, wenn du vorher z.B. SetLastError(NO_ERROR) nutzt und hinterher der GetLastError was Anderes sagt, dann hat das rein garnichts zu sagen, so lange das Result sagt "ich bin OK". |
AW: ShellExecute 42, GetLastError 126
Ich wollte damit auch nicht sagen, dass man das so machen sollte.
|
AW: ShellExecute 42, GetLastError 126
Hallo,
Thema ist beendet, ich hatte ja SW_HIDE (0) übergeben. Danke ! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:48 Uhr. |
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