Einzelnen Beitrag anzeigen

Benutzerbild von turboPASCAL
turboPASCAL

Registriert seit: 8. Mai 2005
Ort: Sondershausen
4.274 Beiträge
 
Delphi 6 Personal
 
#14

Re: Eine frage zum öffnen von exen

  Alt 18. Jan 2009, 16:46
Da die Funktion SelectDirectory() schon recht alt ist sollte man lieber auf SHGetSpecialFolderLocation() zurückgreifen.

Delphi-Quellcode:
implementation

{$R *.dfm}

uses
  ShellAPI, ShlObj;

var
  ExecAppPath: string;

function OpenFolder(root: Integer = 0; Caption: string = ''): string;
var
  bi: TBrowseInfo;
  lpBuffer: PChar;
  pidlPrograms, pidlBrowse: PItemIDList;
begin
  if (not SUCCEEDED(SHGetSpecialFolderLocation(GetActiveWindow, root,
    pidlPrograms))) then
    exit;
  lpBuffer := StrAlloc(MAX_PATH);
  bi.hwndOwner := GetActiveWindow;
  bi.pidlRoot := pidlPrograms;
  bi.pszDisplayName := lpBuffer;
  bi.lpszTitle := PChar(Caption);
  bi.ulFlags := BIF_RETURNONLYFSDIRS;
  bi.lpfn := nil;
  bi.lParam := 0;

  pidlBrowse := SHBrowseForFolder(bi);
  if (pidlBrowse <> nil) then
    if SHGetPathFromIDList(pidlBrowse, lpBuffer) then
      Result := lpBuffer;
  StrDispose(lpBuffer);
end;

procedure RunExternalApplication(ApplicationPath, ApplicationName, Parameters: string);
var
  ExecError: integer;
begin
  ExecError := ShellExecute(
    Application.Handle,
    'open',
    PCHAR(ApplicationName),
    PCHAR(Parameters),
    PCHAR(ApplicationPath),
    SW_NORMAL);

  if ExecError <= 32 then
    ShowMessage(format('Fehler beim starten von "%s"'#13'Fehlernummer: %d', [ApplicationName, ExecError]));
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  if ExecAppPath = 'then
    ExecAppPath := OpenFolder;

  if ExecAppPath <> 'then
    RunExternalApplication(ExecAppPath, 'nuppsy.exe', '');
end;

end.
Da heute Sonntag ist mach ich mal Ausnahmsweise kein kleines Codebeispiel.
Matti
Meine Software-Projekte - Homepage - Grüße vom Rüsselmops -Mops Mopser
  Mit Zitat antworten Zitat