Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Eine frage zum öffnen von exen (https://www.delphipraxis.net/127755-eine-frage-zum-oeffnen-von-exen.html)

xAuronx 18. Jan 2009 15:15

Re: Eine frage zum öffnen von exen
 
Zitat:

Zitat von DeddyH
Das geht entweder mittels SelectDirectory() oder per Komponente. Im OpenSource-Bereich gibt es AFAIR eine Komponente von Garfield für solche Zwecke. Abspeichern könntest Du den Pfad dann z.B. in einer Ini-Datei oder in der Registry.

könntest du mir evtl. ein Beispiel code hier schreiben ^^

DeddyH 18. Jan 2009 15:19

Re: Eine frage zum öffnen von exen
 
Beispiel wofür? Einen Link zum Auswählen eines Verzeichnisses hat Matze Dir ja weiter oben bereits gepostet. Bei Folgefragen bzgl. Ini oder Registry dann aber bitte einen neuen Thread eröffnen oder besser noch die Suchfunktion bemühen, gell? ;)

xAuronx 18. Jan 2009 15:26

Re: Eine frage zum öffnen von exen
 
Zitat:

Zitat von DeddyH
Beispiel wofür? Einen Link zum Auswählen eines Verzeichnisses hat Matze Dir ja weiter oben bereits gepostet. Bei Folgefragen bzgl. Ini oder Registry dann aber bitte einen neuen Thread eröffnen oder besser noch die Suchfunktion bemühen, gell? ;)

jop, ich hab den post erst gesehen wo ich meinen schon abgesendet hab ^^

turboPASCAL 18. Jan 2009 15:46

Re: Eine frage zum öffnen von exen
 
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.

Matze 18. Jan 2009 15:48

Re: Eine frage zum öffnen von exen
 
Das wurde bereits verlinkt. ;)

DeddyH 18. Jan 2009 15:50

Re: Eine frage zum öffnen von exen
 
Außerdem gibt es von SelectDirectory eine überladene Variante, die ist nicht so "alt".

turboPASCAL 18. Jan 2009 16:02

Re: Eine frage zum öffnen von exen
 
Zitat:

Zitat von Matze
Das wurde bereits verlinkt. ;)

Ja. ;)

Zitat:

Zitat von DeddyH
Außerdem gibt es von SelectDirectory eine überladene Variante, die ist nicht so "alt".

Wo ? :gruebel:

DeddyH 18. Jan 2009 16:04

Re: Eine frage zum öffnen von exen
 
Zitat:

Zitat von Delphi 7-Hilfe
Zeigt ein Dialogfeld an, in dem der Benutzer einen Verzeichnisnamen eingeben kann.

Unit

FileCtrl

Kategorie

Dialogfelder und Meldungen

Delphi-Syntax:

Delphi-Quellcode:
function SelectDirectory(const Caption: string; const Root: WideString; out Directory: string): Boolean; overload;
function SelectDirectory(var Directory: string; Options: TSelectDirOpts; HelpCtx: Longint): Boolean; overload;
C++ Syntax:

Code:
extern PACKAGE bool __fastcall SelectDirectory(const AnsiString Caption, const WideString Root, AnsiString &Directory);
extern PACKAGE bool __fastcall SelectDirectory(AnsiString &Directory, TSelectDirOpts Options, int HelpCtx);
Beschreibung

Mit SelectDirectory können Sie vom Benutzer ein Verzeichnis abfragen.

Mit der ersten Syntax kann eine Windows-Verzeichnisauswahl angezeigt werden. Der Parameter Caption gibt den Titel des Dialogfelds an. Root legt das Anfangsverzeichnis fest. Das vom Benutzer gewählte Verzeichnis wird im Parameter Directory zurückgegeben. Bei dieser Syntax ändert SelectDirectory den Wert für das aktuelle Verzeichnis nicht.

Warnung: Für die Parameter Root und Directory dürfen nicht die gleichen Variablen verwendet werden.

Mit der zweiten Syntax wird das Dialogfeld Verzeichnis auswählen aufgerufen. Das im Parameter Directory übergebene Verzeichnis ist nach der Anzeige des Dialogfeldes als aktuelles Verzeichnis ausgewählt. Der Name des vom Benutzer gewählten Verzeichnisses wird in Directory zurückgegeben.

Im Parameter HelpCtx wird die Hilfekontext-ID angegeben.

Der Parameter Options enthält eine Menge von Werten. Wenn Options eine leere Menge ist, kann der Benutzer nur Verzeichnisse auswählen, die bereits existieren. In diesem Fall wird kein Feld zur Eingabe eines neuen Verzeichnisnamens angeboten. Ist Options nicht leer, bestimmen die angegebenen Werte, wie das Dialogfeld auf die Angabe eines nicht vorhandenen Verzeichnisnamens reagiert.

Bei beiden Syntaxformen gibt SelectDirectory den Wert true zurück, wenn der Benutzer ein Verzeichnis ausgewählt und mit OK bestätigt hat. Hat er Abbrechen gewählt oder das Dialogfeld geschlossen, ohne ein Verzeichnis auszuwählen, lautet der Rückgabewert false.


turboPASCAL 18. Jan 2009 16:22

Re: Eine frage zum öffnen von exen
 
Achso der, ich dachte schon es gäbe etwas neueres... Naja wers nutzen will.

xAuronx 18. Jan 2009 21:20

Re: Eine frage zum öffnen von exen
 
kommt zwar jetzt ein bisschen spät aber ich kann zwar ein Pfad bestimmen aber die exe wird noch immer nicht geöffnet.
Oder kann ich nit einfach eine Verknüpfung von einer exe in den ordner tun wo das Programm von mir ist und dann öffnet das Programm über die Verknüpfung das andere Programm ? x.x


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:00 Uhr.
Seite 2 von 3     12 3      

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz