[C++]string in system() oder ShellExecute()
-
Ahoi,
ich habe folgendes Problem: ich möchte einen, via TCP empfangenen, string data mit
data = System::Text::ASCIIEncoding::ASCII->GetString( bytes, 0, i );
in system() oder Shellexecute() einfügen. Der string enthält ein command, z.B. <C:\\WINDOWS\\system32\\calc.exe> oder <cmd.exe /c ipconfig>. Das Problem ist, das mir der Compiler bei Verwendung von system(data) folgendes ausgibt:
error C2664: 'system': Konvertierung des Parameters 1 von 'System::String ^' in 'const char *' nicht möglichjemand 'ne Idee zur Beseitigung des Problems?
Gruss
Caldeum
-
C++/CLI sogar?
#include <msclr/marshal_cppstd.h> //... System::String ^foo = L"Blablabla..."; std::string bar = msclr::interop::marshal_as<std::string>(foo); // und dann: system(bar.c_str());Oder so ähnlich. Hab gad keinen Compiler dabei xD
MfG
-
hab leider die marshal_cppstd.h nicht ... ich guck ob ich die wo find
achja: benutze Visual C++ 2008 in Windows Forms
-
Cladeum schrieb:
hab leider die marshal_cppstd.h nicht ... ich guck ob ich die wo find
achja: benutze Visual C++ 2008 in Windows Forms
marshal_cppstd.hgibts eventuell nicht in der Express Edition. Aber kein Problem, es ist nur eine Hilfe, es gibt noch etwa ein Dutzend andere Wege. Mit der "alten" Marshal Klasse sieht es so aus:#include <iostream> using namespace std; using namespace System; using namespace System::Runtime::InteropServices; int main() { String ^foo = L"cmd"; IntPtr cptr = Marshal::StringToHGlobalAnsi(foo); system(static_cast<const char *>(cptr.ToPointer())); Marshal::FreeHGlobal(cptr); // Nicht vergessen... return 0; }: Im falschen Forum sind wir trotzdem :p
MfG
-
mir ist mit deinem zweiten Quelltext grad nicht ganz klar wie ich dann den Inhalt von data in system() oder ShellExecute() einbetten soll.