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 42, GetLastError 126 (https://www.delphipraxis.net/192980-shellexecute-42-getlasterror-126-a.html)

hoika 8. Jun 2017 08:13

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:
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;
hInst=42
iError=126


Was ist das denn?

Der schöne Günther 8. Jun 2017 08:27

AW: ShellExecute 42, GetLastError 126
 
Zitat:

If the function succeeds, it returns a value greater than 32.
https://msdn.microsoft.com/en-us/lib...(v=vs.85).aspx


Wo ist dein Problem?

TiGü 8. Jun 2017 08:36

AW: ShellExecute 42, GetLastError 126
 
Geht es um die Antwort auf die Frage nach dem Leben, dem Universum und dem ganzen Rest? :wink:

hoika 8. Jun 2017 09:12

AW: ShellExecute 42, GetLastError 126
 
Hallo,
der Editor wird nicht gestartet.

Der schöne Günther 8. Jun 2017 09:21

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:

If lpFile specifies a document file, lpParameters should be NULL.

DeddyH 8. Jun 2017 09:26

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.

hoika 8. Jun 2017 09:47

AW: ShellExecute 42, GetLastError 126
 
Hallo,

Zitat:

Du gibst ja auch einen Parameter (leerer String statt nil) an. Das bedeutet implizit dass deine .txt-Datei eine Anwendung wäre.
Nö, mit PDF klappt das ja auch.

Zitat:

Wird er nicht gestartet, oder siehst Du ihn nur nicht? Du gibst als nShowCmd 0 an, was SW_HIDE entspricht.
Argz, genau das war das Problem;)
Ich Dussel.
Interessanterweise ignoriert der Acrobat-Reader bei PDFs meinen Parameter.

Der schöne Günther 8. Jun 2017 09:52

AW: ShellExecute 42, GetLastError 126
 
Zitat:

Zitat von hoika (Beitrag 1373808)
Nö, mit PDF klappt das ja auch.

Richtig ist es trotzdem nicht

himitsu 8. Jun 2017 09:54

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.

Zacherl 8. Jun 2017 12:48

AW: ShellExecute 42, GetLastError 126
 
Zitat:

Zitat von hoika (Beitrag 1373793)
Delphi-Quellcode:
hInst := ShellExecute(0, nil, PChar(sDateiName), '', nil, 0);
iError := GetLastError;

Kann man in deinem Codebeispiel nicht mehr erkennen, aber prüfst du auch erst den Wert von
Delphi-Quellcode:
hInst
, bevor du
Delphi-Quellcode:
iError
auswertest? Im Erfolgsfalle ist der Wert von MSDN-Library durchsuchenGetLastError nämlich immer undefiniert.


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