Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Library: Windows API / MS.NET Framework API (https://www.delphipraxis.net/20-library-windows-api-ms-net-framework-api/)
-   -   Delphi Dateien und Anwendungen aus Delphi heraus starten (https://www.delphipraxis.net/59711-dateien-und-anwendungen-aus-delphi-heraus-starten.html)

Matze 27. Dez 2005 17:36


Dateien und Anwendungen aus Delphi heraus starten
 
Moin,

mit folgendem Code lässt sich so ziemlich jede mit einer Anwendung verknüpfte Datei oder eine Anwendung selbst aus Delphi heraus starten, zumindest ist mir keine bekannt, die man so nicht starten kann. Jetzt denkt ihr sicher, wieso soll ich kein Delphi-Referenz durchsuchenShellExecute nutzen, das kann doch das gleiche. Nunja, nein, nicht immer, was mit schier den letzten Nerv geraubt hätte, als ich eine PDF-Datei öffnen wollte.

Entdeckt habe ich den Code hier.

Delphi-Quellcode:
uses
  ShellAPI;

  //...

function ExecuteProgramm(const PFileName: string): Boolean;
var
  SEInfo: TShellExecuteInfo;
  ExitCode: DWORD;
  ExecuteFile: string;
begin
  ExecuteFile := '"' + PFileName + '"';
  FillChar(SEInfo, SizeOf(SEInfo), 0);
  SEInfo.cbSize := SizeOf(TShellExecuteInfo);

  with SEInfo do
  begin
    fMask := SEE_MASK_NOCLOSEPROCESS;
    Wnd := Application.Handle;
    lpFile := PChar(ExecuteFile);
    nShow := SW_SHOWNORMAL;
  end;

  if ShellExecuteEx(@SEInfo) then
  begin
    repeat
      Application.ProcessMessages;
      GetExitCodeProcess(SEInfo.hProcess, ExitCode);
    until (ExitCode <> STILL_ACTIVE) or
      Application.Terminated;

    Result := true;
  end else
  begin
    Result := false;
  end;
end;
Der Vollständigkeit halber hier noch die kürzere Variante, die leider nicht immer so funktioniert, wie man es gerne hätte

Delphi-Quellcode:
uses
  ShellAPI;

  //...

function OpenFile(const FileName: string): Boolean;
begin
  Result := ShellExecute(Application.Handle, 'open', PChar('"' + FileName + '"'),
    nil, nil, SW_NORMAL) > 32;
end;
.


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