PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : C++ Hilfe bei .exe funktions aufruf



PlayEgoShooter
04.04.2010, 03:51
ich habe versucht eine .exe für einen l4d2 serverstarter in der header datei (form1.h)aufzurufen wie bekomme ich das mit einem c++string hin bzw. wie convertiere ich einen c++string in einen char*string ?



private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {
serverstart = "left4dead2.exe " + "-console -novid +sv_allow_lobby_connect_only 0 +sv_lan 1 +z_difficulty" + skg + " +map " + kampagne + map;//sgk =schwierigkeitsgrad
//hier müsste der aufruf .exe aufruf kommen "system(serverstart); bzw. die convertierung mit hinen
//oder eine funktion die gleich den c++ string verwendet
}


ich danke schonmal für eure antworten

A.I.
04.04.2010, 05:04
Mach dir doch eine Batchdatei. Viel einfacher und erfüllt den Zweck.

LP-Fan
04.04.2010, 09:28
Ein Char* String wird so initaliersiert:

char* stringname="INHALT";

Hoffe das Hilft dir weiter... ;)

Gruss
LP-Fan

PlayEgoShooter
04.04.2010, 15:48
an A.I. :
ich wollte halt eine windos form anwendung machen mit comboboxen zum auswählen eine batch datei habe ich bereits (Heruntergeladen)

an LP-Fan :
da kommt nur ne fehlermeldung trodsdem danke

error C2440: 'Initialisierung': 'System::String ^' kann nicht in 'char *' konvertiert werden

-simon

1mannlan
04.04.2010, 17:04
Nicht das ich mich jetzt sonderlich mit C++ auskenne eigentlich garnicht, aber in C# gibts da eine klasse die heißt Process.Start("Pfad","Parameter").
die gibts wohl in C++ auch:
http://msdn.microsoft.com/en-us/library/aa326952%28v=VS.71%29.aspx

Ins erste muss dann nur der Pfad zur datei, ins zweite die Parameter. Wichtig ist, das wenn du Parameter mit leerzeichen hast, diese in Anführungszeichen setzen musst, d.h. nicht die des Strings, sondern die, die an das zu Startende Programm übergeben werden:
z.B. würde dieser string hier:

String = " \"Mir gehts nicht so gut\"";

Etwa das hier ausgeben:

"Mir gehts nicht so gut"

Hoffe ich konnte helfen.

PlayEgoShooter
04.04.2010, 17:49
sry die funktion kennt der compiler irgendwie nicht

kartoffel
04.04.2010, 18:09
Wenn du versuchst ne WinForms-Anwendung zu schreiben wäre es schon sinnvoller, zu wissen, welchen Compiler du nutzt.
VC++ scheint es offenbar nicht zu sein, Process#Start ist nämlich standartmäßig dabei.

don-banane
04.04.2010, 18:10
Warum in ein Char array konvertieren?


String^ path = "l4d2.exe";
String^ parameters = String::Concat("-console -novid +sv_allow_lobby_connect_only 0 +sv_lan 1 +z_difficulty", skg, " +map ", kampagne, map);
System::Diagnostics::Process::Start(path, parameters);


Die Funktion gibts schon, musst du nur im richtigen Namespace aufrufen.

PlayEgoShooter
04.04.2010, 19:30
sry manchmal denke ich nicht weit genug

danke es funktioniert

ich wolte nich fragen ob jemad interesse am fertigen programm hat

Edit:
weil ich nicht weiß wo man sowas hochladen kann ^^