Delphi-PRAXiS

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 14:24


Eine frage zum öffnen von exen
 
ich wollte mal fragen wie man eine exe per button klick in einem anderen programmm öffnet während die exe in einem anderem Verzeichnis ist als das programm mit dem ich es starten will

mkinzler 18. Jan 2009 14:26

Re: Eine frage zum öffnen von exen
 
ShellExecute() mit Angabe des kompletten Pfades

xAuronx 18. Jan 2009 14:40

Re: Eine frage zum öffnen von exen
 
ehm danke ^^ ich hab noch ne frage ich will das Programm auch anderen leuten geben aber die hab z.B einen anderen Pfad als ich nur der end ordner stimmt über ein was muss ich dann da rein schreiben?

DeddyH 18. Jan 2009 14:49

Re: Eine frage zum öffnen von exen
 
Dann musst Du den Pfad dynamisch ermitteln.

xAuronx 18. Jan 2009 14:56

Re: Eine frage zum öffnen von exen
 
Zitat:

Zitat von DeddyH
Dann musst Du den Pfad dynamisch ermitteln.

sorry, bin voll der Anfänger wie macht man sowas ?^^

DeddyH 18. Jan 2009 14:58

Re: Eine frage zum öffnen von exen
 
Welcher Pfad ist es denn? Danach richtet sich die Funktion, die benutzt werden sollte.

Matze 18. Jan 2009 15:00

Re: Eine frage zum öffnen von exen
 
Es kommt aufs Programm an. Manche Pfade findest du in der Registry.

Du kannst natürlich auch beim ersten Programmstart den Benutzer das Verzeichnis wählen lassen und dies dann speichern und darauf zugreifen.

xAuronx 18. Jan 2009 15:09

Re: Eine frage zum öffnen von exen
 
Zitat:

Zitat von Matze
Es kommt aufs Programm an. Manche Pfade findest du in der Registry.

Du kannst natürlich auch beim ersten Programmstart den Benutzer das Verzeichnis wählen lassen und dies dann speichern und darauf zugreifen.

Das der Benutzer das Verzeichnis aussucht hört sich doch gut an ^^ wie macht man das? xD

DeddyH 18. Jan 2009 15:12

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

Matze 18. Jan 2009 15:13

Re: Eine frage zum öffnen von exen
 
Benutze doch mal die Suche, dann findest du Lösungen. Wie man mit Ini-Dateien umgeht etc. findest du auch über die Suche.

Grüße

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

turboPASCAL 18. Jan 2009 21:39

Re: Eine frage zum öffnen von exen
 
Mehr oder weniger schon, aber einfacher wird es dadurch auch nicht. ;)

Matze 19. Jan 2009 15:36

Re: Eine frage zum öffnen von exen
 
Richtig, denn in der Verknüpfung steht ja auch der Pfad. Zeige mal bitte deinen Source, den du hast.

Luckie 19. Jan 2009 15:40

Re: Eine frage zum öffnen von exen
 
Zitat:

Zitat von xAuronx
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

Also ich habe es nicht verstanden, was du willst. Korrekte Rechtschreibung, etwas Zeichensetzung, eventuell eine Aufteilung in mehrere einzelne Sätze und vorher überlegen, was man eigentlich will, würde sehr zum Verständnis beitragen.

xAuronx 21. Jan 2009 17:24

Re: Eine frage zum öffnen von exen
 
Zitat:

Zitat von Luckie
Zitat:

Zitat von xAuronx
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

Also ich habe es nicht verstanden, was du willst. Korrekte Rechtschreibung, etwas Zeichensetzung, eventuell eine Aufteilung in mehrere einzelne Sätze und vorher überlegen, was man eigentlich will, würde sehr zum Verständnis beitragen.

omg die anderen haben mich verstanden und sie haben mir auch schon geholfen also musst du nicht hier sowas unnötiges schreiben

himitsu 21. Jan 2009 17:51

Re: Eine frage zum öffnen von exen
 
*auch mal unnötig mitmach*
Es wär dennoch seh nett, wenn du das nächste Mal etwas mehr auf deinen Satzbau und den Inhalt achtest.
Denn es ist nicht grad einfach sowas zu lesen und ich glaub mit der Zeit haben nicht mehr viele die Lust sich sowas anzutun und werden dann vermutlich garnicht erst anfangen es zu lesen.

Abgesehn davon, daß es sogar gegen die AGB verstößt.

DeddyH 21. Jan 2009 18:03

Re: Eine frage zum öffnen von exen
 
http://www.delphipraxis.net/internal...t.php?t=147368 :mrgreen:


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:24 Uhr.

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