Errorcode 31 mit ShellExecute

Antworten
Moppelstroppel
Beiträge: 3
Registriert: 15.06.2020 16:34:33

Errorcode 31 mit ShellExecute

Beitrag von Moppelstroppel »

Hallo Zusammen,

in meiner Software rufe ich die folgenden Funktion (Standard Windows) auf

int ret = (int)ShellExecute(Handle, L"open", "C:\\MeinPdfDok.pdf", 0, 0, SW_SHOWDEFAULT);

Als Fehlercode erhalte ich 31. Bedeutet so viel, dass die Software Fehler in der Konfiguration (Registry) hat.
Können Sie mir hier weiterhelfen?
Mit anderen Programmen wie Adobe oder Foxit öffnet sich das Dokument ohne Fehler.
Die Windows Version ist W10 Prof.
Programmiert in C++Builder 10.3 ist aber egal, da ShellExecute von Windows ist und nicht von embarcadero / C++Builder

Besten Dank
Thomas
martin-k
SoftMaker Team
SoftMaker Team
Beiträge: 6133
Registriert: 03.12.2003 14:32:06
Kontaktdaten:

Re: Errorcode 31 mit ShellExecute

Beitrag von martin-k »

Sie fordern Windows auf, das Standardprogramm für PDF-Dateien zu öffnen, das dann das betroffene Dokument laden soll. Generell ist das bei Windows sehr trickreich. Das haben wir auch bei TextMaker gemerkt, der nach dem Generieren einer PDF-Datein den Default-Viewer öffnet.

Wie genau stellen Sie auf demselben PC fest, dass FlexiPDF nicht, aber Acrobat und Foxit sehr wohl öffnen? Schalten Sie über die Systemsteuerung die Standardprogramme um?
Martin Kotulla
SoftMaker Software GmbH
Moppelstroppel
Beiträge: 3
Registriert: 15.06.2020 16:34:33

Re: Errorcode 31 mit ShellExecute

Beitrag von Moppelstroppel »

Am Anfang hatte ich Foxit installiert was das PDF Dokument geöffnet hatte
Vor zwei Wochen habe ich mir Adobe Acrobat 2017 gekauft und installiert. Das PDF Dokument wurde von Adobe Acrobat 2017 geöffnet.
Ich habe unsere Software beim Kunde installiert, wo FlexiPDF genutzt wird. Hier kam es zu dem Fehler 31.

Um das Problem zu prüfen habe ich die Testversion von FlexiPDF installiert und bekam den selben Fehler 31. Wenn ich dann unter Windows das Standardprogramm für .pdf wieder auf Adobe Acrobat 2017 umgestellt hatte wurde das PDF Dokument mit Adobe Acrobat 2017 geöffnet.

Als ich das Standardprogramm wieder auf FlexiPDF umstellte kam der Fehler 31 wieder.
Moppelstroppel
Beiträge: 3
Registriert: 15.06.2020 16:34:33

Re: Errorcode 31 mit ShellExecute

Beitrag von Moppelstroppel »

Ist das Entwicklerteam damit beschäftigt oder eher nicht?

Danke
Thomas
martin-k
SoftMaker Team
SoftMaker Team
Beiträge: 6133
Registriert: 03.12.2003 14:32:06
Kontaktdaten:

Re: Errorcode 31 mit ShellExecute

Beitrag von martin-k »

Der Fehler heißt nur, dass Windows kein geeignetes Programm zum Öffnen der PDF-Datei findet.

Wir wissen nicht, wie Ihr PC und der Kunden-PC konfiguriert sind. Haben Sie denn sichergestellt, dass FlexiPDF als Standard-PDF-Viewer eingestellt ist?

Leider gibt es gerade für PDF-Dateien auch eine Reihe von Positionen in der Registry für die Verknüpfung mit der Extension ".pdf", und Microsoft dokumentiert nicht, auf welche davon ShellExecute reagiert.

Ich würde auf CreateProcess umstellen. Dazu müssen Sie erst in der Registry den Standard-PDF-Viewer ermitteln und dann diesen starten. Aber das arbeitet wenigstens zuverlässig.
Martin Kotulla
SoftMaker Software GmbH
Antworten

Zurück zu „FlexiPDF 2019 für Windows“