Der Titel sagt schon alles:
Ich habe zwei Anwendungen: Eine C++ Konsolenanwendung und eine C# XNA Anwendung. Die XNA Anwendung bekommt von der C++ Konsole Befehle per PostMessage(). Ich habe für die Message eine eigene Per RegisterWindowMessage() registriert. Die Message wird auch sauber per PeekMessage() in der XNA Anwendung abgefangen.
Nun ist das Problem, dass ich einen String an die XNA Anwendung liefern möchte. Das habe ich durch übergeben der Adresse des C-strings in LPARAM getan. Jedoch komme ich an den String in der XNA Anwendung nicht heran! Ich bekomme immer einen Leerstring. Die Adresse kommt richtig an, habe ich per Debugging überprüft. hier die beiden Codestellen:
|
C-/C++-Quelltext
|
1
2
3
|
/*von c++ gesendet*/
strcpy_s(bufferdata,256,"0,127,255,1,127,255,2,127,255,4,127,255");
PostMessage(HWND_BROADCAST,servomessage,0,reinterpret_cast<LPARAM>(bufferdata));
|
|
Quellcode
|
1
2
3
4
5
6
7
8
9
10
11
12
13
|
/*C# fängt ab*/
NativeMessage msg = new NativeMessage();
if (PeekMessage(out msg, IntPtr.Zero, 0, 0, 1))
{
/*hier springt er rein*/
if (msg.msg == servomessage)
{
string statement = "";
statement = Marshal.PtrToStringAnsi(msg.lParam);
/*statement ist ein leestring!*/
_robot.MoveServos(statement);
}
}
|
Wie gesagt, das Event kommt richtig an, aber der String ist immer leer. Ideen?!