// 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;



 

Zugriffe seit 6.9.2001 auf Delphi-Ecke