Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Progamm im ersten Programm starten (https://www.delphipraxis.net/26278-progamm-im-ersten-programm-starten.html)

Luke23 21. Jul 2004 12:13


Progamm im ersten Programm starten
 
Hallo Leute!!!

habe mal ein kleines Problem und zwar!

ein Programm kann ich ja so starten

ShellApi

ShellExecute(Application.Handle, 'open', 'c:\test.exe', nil, nil, SW_SHOW);

geht das auch das ich ein Programm starte und in diesem Programm ein Neues Programm starte mit Parameter???
also: es startet sich beim Butten das Programm Test.exe in dem Programm soll dann gleich das test2.exe Programm mit Parameter gestartet werden

geht sowas??? wenn ja wie könnte ich das machen??

Mfg Luke23

Ps: ich danke euch für jeden tip

MathiasSimmack 21. Jul 2004 12:17

Re: Progamm im ersten Programm starten
 
Wenn das "test2"-Programm auch von dir ist, dann geht das natürlich auch mit "ShellExecute". Ansonsten solltest du deine Frage so formulieren, dass auch Leute ohne Studium sie verstehen. :stupid:

Luke23 21. Jul 2004 15:36

Re: Progamm im ersten Programm starten
 
hÖ???

wie soll ich das erklären???

also ich klicke auf einen schalter Program 1 öffnet sich danach öffnet sich gleich im Program 1 das 2 programm mit parameter

klick auf schalter ->emulator startet ->spiel wird geladen mit parameter
hm vieleicht hielft das ja weis das nicht so genau
:)

hm so besser @ MathiasSimmack ??

hättest du nen tip wie ich das machen könnte??

shmia 21. Jul 2004 15:50

Re: Progamm im ersten Programm starten
 
Zitat:

Zitat von Luke23
ein Programm kann ich ja so starten

ShellExecute(Application.Handle, 'open', 'c:\test.exe', nil, nil, SW_SHOW);

geht das auch das ich ein Programm starte und in diesem Programm ein Neues Programm starte mit Parameter???
also: es startet sich beim Butten das Programm Test.exe in dem Programm soll dann gleich das test2.exe Programm mit Parameter gestartet werden

Delphi-Quellcode:
function GetCommandLineParams:PChar;
begin
   Result := GetCommandLine;
   Result := StrScan(Result, ' '); // suche 1. Leerzeichen
   if Assigned(Result) then
      Inc(Result); // Leerzeichen überhupfen
end;
// übergabe-Parameter werden durchgereicht
ShellExecute(Application.Handle, 'open', 'c:\test2.exe', GetCommandLineParams, nil, SW_SHOW);

Matze 21. Jul 2004 15:52

Re: Progamm im ersten Programm starten
 
Wenn du so auf Umwegen das 2. programm öffnest, wieso kannst du dann nicht gleich beide Programme aus deinem programm heraus starten?

MathiasSimmack 21. Jul 2004 16:02

Re: Progamm im ersten Programm starten
 
Zitat:

Zitat von Luke23
hm so besser @ MathiasSimmack ??

Nicht wirklich.

Zitat:

also ich klicke auf einen schalter Program 1 öffnet sich danach öffnet sich gleich im Program 1 das 2 programm mit parameter
Zeig das mal deinem Deutschlehrer und sag mir, wie man das ohne vernünftige Satzzeichen (Wo zum Geier sind die Kommas?) interpretieren soll? Bitte, bitte: Ein bisschen mehr Sorgfalt. Euch hetzt keiner beim Schreiben eurer eigenen Fragen. Die Chance, dass ein anderer die gleiche Frage eher stellt, ist äußerst gering.

Zitat:

klick auf schalter ->emulator startet ->spiel wird geladen mit parameter
Womit meine Frage von oben aber immer noch nicht beantwortet ist.
Ich habe bemerkt, dass dir "ShellExecute" bekannt ist. Meine Frage war jetzt, ob das "test2"-Programm (hier wohl als "emulator" bezeichnet?) auch von dir ist. Wenn Ja, dann wäre die Frage, woher kommen die Parameter, die du angegeben hast, und woher soll der Emulator wissen, welches Spiel er starten muss?

Wahrscheinlich läuft´s auf shmias idee hinaus. Dein erstes Programm muss die notwendigen Parameter gleich an den Emulator weiterreichen, der dann (hoffentlich) das Spiel richtig startet.

Luke23 21. Jul 2004 17:30

Re: Progamm im ersten Programm starten
 
hm @ MathiasSimmack!!

also so wie ich das sehe hat shmia verstanden was ich machen will,wo bleibst du da stehen oder was verstehst du nicht so ganz

mein programm mit einem schalter
ich klicke -> ein emulator geht auf und nachdem er auf ist -> öffnet er gleich ein spiel mit parameter im emulator

aber danke!

ich werde es mal mit shmia seiner antwort versuchen da denke ich mal komme ich weiter !!

ThX aber an alle :)

bigg 21. Jul 2004 17:49

Re: Progamm im ersten Programm starten
 
hi,

@Luke
Also ehrlich gesagt, ich kann das was du vorhast auch nicht nachvollziehen.

Luke23 21. Jul 2004 20:10

Re: Progamm im ersten Programm starten
 
oh man okay nochmal ich erkläre das mal an einem andere beispiel okay!!!


also ich möschte nachher auf meinen schalter klicken dann soll er ms-dos aufmachen dann gleich ein programm(Spiel) starten + parameter zum spiel das wars !!

ich hoffe oder denke mal das alle das jetzt verstanden haben!! :wink:

bigg 21. Jul 2004 20:58

Re: Progamm im ersten Programm starten
 
hi,

genau das meine ich, ms-dos unter Windows starten ?
Meinst du die Windows-Eingabeaufforderrung ?

Welches Windows verwendest du ?
Was ist das für ein Spiel, ein Dosspiel, das aber auch unter Windows läuft ?

Sowas mußt du hier schon angeben, ansonsten kann dir auch
nicht geholfen werden.

Ein Programm startest du wie folgt:
Code:
ShellExecute(0, nil, PChar('Dateipfad'), Pchar('Parameter'), nil, SW_NORMAL);
Hier wird ein Spiel gestartet und der Parameter an das Spiel übergeben.
Code:
ShellExecute(0, nil, PChar('C:\Game\volly.exe'), Pchar('C:\Game\map1.pk3'), nil, SW_NORMAL);

Luke23 22. Jul 2004 00:46

Re: Progamm im ersten Programm starten
 
Hallo!!

ja okay sorry das habe ich dann wohl doch falsch verstanden!!

also ich habe xp und öffne mit meinem schalter die cmd.exe danch soll er das spiel starten mit parameter!!ja das öffnen macht er schon aber das spiel startet er nicht!!ich habe in einer dslibrary.chm gelesen das es so gehen soll aber irgentwie macht er das leider nicht!!
ich hoffe das ihr nen tip habt!!

Mfg Luke23

scp 22. Jul 2004 01:04

Re: Progamm im ersten Programm starten
 
Also im Fall der cmd.exe ginge es so:
Delphi-Quellcode:
ShellExecute(0, nil, PChar('cmd.exe'), Pchar('/K C:\Game\volly.exe C:\Game\map1.pk3'), nil, SW_NORMAL);
Wenn du statt /K die Option /C verwendest, wird das "DOS-Fenster" nach dem ausführen des Spiels/Emulators oder was auch immer beendet.

Luke23 23. Jul 2004 12:32

Re: Progamm im ersten Programm starten
 
Hallo!!

also ich habe es jett so das mein teil startet wie kann ich aber in den parametern noch was verändern?? könnte mir da vieleicht noch einer einen tip zu geben?? ich wolte das so machen das ich die parameter in 2editfenstern angeben kann aber wie??

ShellExecute(0, nil, PChar('cmd.exe'), Pchar('/K C:\Game\volly.exe C:\Game\map1.pk3'), nil, SW_NORMAL);

also so geht das ganze schonmal recht gut nun habe ich versucht edit fenster zu setzen aber dann startet er zwar aber mit den falschen parametern wie kann ich das jetzt lösen??

PChar('/K C:\Game\volly.exe'), PChar(ParamterList), SW_NORMAL); und im paramter dann halt so
ParamterList := 'Edit1.Text ' + 'Edit2.Text';

ja das geht aber leider nicht so ganz könnte mir da vieleicht einer noch nen tip zu geben??

MathiasSimmack 23. Jul 2004 12:36

Re: Progamm im ersten Programm starten
 
Bitte benutze künftig das [delphi]-Tag für deinen Quellcode. Das liest sich besser.

Und dann schau dir mal die Syntax des Befehls "ShellExecute" an. Das zu startende Programm ist die "cmd.exe". Dein Spiel und seine Parameter sind nur die Parameter für das zu startende Programm. Du benutzt im Moment die Angabe des Arbeisverzeichnisses für die Parameter des Spiels, und das kann nicht gehen.

Spezi1980 23. Jul 2004 12:50

Re: Progamm im ersten Programm starten
 
Hallo ne etwas andere Idee:

Delphi-Quellcode:
procedure Starte Programm;
 var Strings : TStrings;
begin
    //wir nehmen eine Batchdatei,
    //da kannst du soviel reinpacken mit nochsoviel
    //Parametern wie du willst
    Strings := TStringlist.create;
    try
        Strings.add('@echo off'); //schaltet die Anzeige ab
        Strings.add('test.exe /bla /bla /blabla'); //Dein Programm mit Parametern
        Strings.add('del %0'); //löscht die batchdatei nach der ausführung
        //Datei speichern (Ich hasse es, wenn ein Programm etwas irgendwohin speichert.)
        Strings.savetofile(IncludetrailingBackslash(extractfilepath(Paramstr(0)))+'Test.bat');
    finally
       Strings .free;
    end;
    //Batchdatei starten
    ShellExecute(Application.Handle, 'open',
                 IncludetrailingBackslash(extractfilepath(Paramstr(0)))+'Test.bat',
                 nil, nil, SW_SHOW);
end;
Kann das leider nicht so testen weil ich hier kein Delphi hab. Müsste aber funktionieren.

roderich 23. Jul 2004 13:08

Re: Progamm im ersten Programm starten
 
@Luke23
wieso nimmst Du dir nicht einfach die Zeit, Dein Anliegen knapp und präzise zu beschreiben ? Dann ist die Chance relativ hoch, daß dir geholfen werden kann. Btw. ich habs auch mit Studium nicht verstanden, was dein Problem ist.

@shmia
wenn du einfach nach Leerzeichen suchst, kannst Du m.E. auf die Nase fallen. Sowohl der erste Parameter (Programmname) als auch die eigentlichen Parameter können Leerzeichen enthalten. Wieso baust du den Parameter-String für die Weitergabe nicht einfach per ParamCount und ParamStr zusammen ?

Gruß
Roderich

scp 23. Jul 2004 22:53

Re: Progamm im ersten Programm starten
 
@Luke23
Ganz einfach, machs mit nem + Operator:
Delphi-Quellcode:
var
  ParamterList : String;
begin
  ParamterList := Edit1.Text + ' ' + Edit2.Text;
  ShellExecute(0, nil, PChar('cmd.exe'), Pchar('/K ' + 'C:\Game\volly.exe' + ' ' + ParameterList), nil, SW_NORMAL);
PS: Edit1.Text usw. sollte man nie zwischen '' setzen, wie dus oben gemacht hast, dann über gibt er nämlich einfach "Edit1.Text Edit2.Text" statt den Inhalt der Edits.


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