// Wenn unter
Windows kein explizites Programm zum Öffnen
// von PDF-Dateien registriert ist, kann man diese mittels "Edge"
// ansehen. Ist ein Programm hinterlegt, dann sollte dieses
// auch genutzt werden. Da das aus Erfahrung nicht immer
// funktioniert hat, hier der folgende Code, welcher übrigens
// bewirkt, dass PDFs auch unter älteren Windows-Versionen
// geöffnet werden
(soweit ein Programm dafür registriert ist).
// Getestet unter
Win7,
Win10, Win11
uses Shellapi;
//uses Winapi.Shellapi;
function findprog(pdf_Datei: string): string;
const
pfad = 'SystemApps\Microsoft.MicrosoftEdge_8wekyb3d8bbwe\MicrosoftEdge.exe';
pfad2 = 'C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe';
var
hlp: string;
buffer: PChar;
begin
result := '';
getmem(buffer, max_path);
if findexecutable(PChar(pdf_Datei), nil, buffer) > 32 then
result := buffer
else
begin
getwindowsdirectory(buffer, max_path);
hlp := buffer;
if ansilastchar(hlp) <> '\' then
hlp := hlp + '\';
hlp := hlp + pfad;
if fileexists(hlp) then
result := hlp
else if fileexists(pfad2) then
result := pfad2;
end;
freemem(buffer);
end;
function Start_pdf(pdf_Datei: string): boolean;
var
prog: string;
begin
result := false;
if not fileexists(pdf_Datei) then
exit;
prog := findprog(pdf_Datei);
if prog = '' then
exit;
result := shellexecute(0, 'open', PChar(prog), PChar(pdf_Datei), nil,
sw_shownormal) > 32;
end;
// Beispielaufruf
procedure TForm1.Button1Click(Sender: TObject);
begin
if not Start_pdf('D:\Test.pdf') then
showmessage('Fehler');
end;
|