Ich bin neu in der Prozesskommunikation und brauche etwas Hilfe. Ich möchte in der Lage sein, eine Zeichenfolge von einem C++ - Programm an ein C# -Programm zu senden. Mein Problem ist, dass die resultierende Zeichenfolge Kauderwelsch ist. Hier ist mein Code:Senden Sie die C++ - Zeichenfolge an die C# -Zeichenfolge. Interop
Senden Programm (C++):
void transmitState(char* myStr)
{
HWND hWnd = ::FindWindow(NULL, _T("myApp v.1.0"));
if (hWnd)
{
COPYDATASTRUCT cds;
::ZeroMemory(&cds, sizeof(COPYDATASTRUCT));
cds.dwData = 0;
cds.lpData = (PVOID) myStr;
cds.cbData = strlen(myStr) + 1;
::SendMessage(hWnd, WM_COPYDATA, NULL, (LPARAM)&cds);
}
}
Und das empfangende Programm (C#) (Ich habe bereits die WndProc außer Kraft gesetzt):
private void OnCopyData(ref Message m)
{
COPYDATASTRUCT cds = new COPYDATASTRUCT();
cds = (COPYDATASTRUCT)Marshal.PtrToStructure(m.LParam, typeof(COPYDATASTRUCT));
String myStr;
unsafe
{
myStr = new String((char*) cds.lpData);
}
label1.Text = myStr;
}
Was ist der Punkt, an dem in C# neu aufgerufen wird und die Referenz sofort mit einem neuen Wert überschrieben wird? – sharptooth