AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Code-Bibliothek Library: Windows API / MS.NET Framework API Delphi Dateien und Anwendungen aus Delphi heraus starten
Thema durchsuchen
Ansicht
Themen-Optionen

Dateien und Anwendungen aus Delphi heraus starten

Ein Thema von Matze · begonnen am 27. Dez 2005
Antwort Antwort
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#1

Dateien und Anwendungen aus Delphi heraus starten

  Alt 27. Dez 2005, 17:36
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;
.

Geändert von Matze ( 3. Nov 2010 um 18:31 Uhr) Grund: Prozedur in eine Funktion umgewandelt
  Mit Zitat antworten Zitat
Antwort Antwort

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:33 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