![]() |
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 |
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:
|
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?? |
Re: Progamm im ersten Programm starten
Zitat:
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); |
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?
|
Re: Progamm im ersten Programm starten
Zitat:
Zitat:
Zitat:
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. |
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 :) |
Re: Progamm im ersten Programm starten
hi,
@Luke Also ehrlich gesagt, ich kann das was du vorhast auch nicht nachvollziehen. |
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: |
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:
Hier wird ein Spiel gestartet und der Parameter an das Spiel übergeben.
ShellExecute(0, nil, PChar('Dateipfad'), Pchar('Parameter'), nil, SW_NORMAL);
Code:
ShellExecute(0, nil, PChar('C:\Game\volly.exe'), Pchar('C:\Game\map1.pk3'), nil, SW_NORMAL);
|
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 |
Re: Progamm im ersten Programm starten
Also im Fall der cmd.exe ginge es so:
Delphi-Quellcode:
Wenn du statt /K die Option /C verwendest, wird das "DOS-Fenster" nach dem ausführen des Spiels/Emulators oder was auch immer beendet.
ShellExecute(0, nil, PChar('cmd.exe'), Pchar('/K C:\Game\volly.exe C:\Game\map1.pk3'), nil, SW_NORMAL);
|
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?? |
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. |
Re: Progamm im ersten Programm starten
Hallo ne etwas andere Idee:
Delphi-Quellcode:
Kann das leider nicht so testen weil ich hier kein Delphi hab. Müsste aber funktionieren.
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; |
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 |
Re: Progamm im ersten Programm starten
@Luke23
Ganz einfach, machs mit nem + Operator:
Delphi-Quellcode:
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.
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); |
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