Ich versuche, eine Nachricht von meiner C++ - Konsolenanwendung an die Delphi X-Anwendung unter Windows 10 zu senden, und sie funktioniert aus irgendeinem Grund nicht. Unten ist mein C++ Code:Nachricht von C++ an Delphi X senden
int _tmain(int argc, _TCHAR* argv[])
{
CString dataToSend = _T("MY DATA");
COPYDATASTRUCT cds;
cds.dwData = 1; // can be anything
cds.cbData = sizeof(TCHAR) * (_tcslen(dataToSend) + 1);
cds.lpData = (void*)dataToSend.GetBuffer(cds.cbData);
HWND hwndFound; // This is what is returned to the caller.
hwndFound = FindWindow(_T("TMyForm"), 0);
if (hwndFound)
{
printf("WINDOW IS FOUND %i... Sending a message...\n", hwndFound);
SendMessage(hwndFound, WM_COPYDATA, (WPARAM)hwndFound, (LPARAM)(LPVOID)&cds);
}
else
{
printf("WINDOW IS NOT FOUND!\n");
}
char* end = "";
printf("Press enter to continue...");
scanf(end);
return 0;
}
Das ist mein Delphi-Code:
private
procedure WMCopyData(var Msg : TWMCopyData); message WM_COPYDATA;
....
procedure TMyForm.WMCopyData(var Msg: TWMCopyData);
var
s : AnsiString;
begin
s := PAnsiChar(Msg.CopyDataStruct.lpData) ;
ShowMessage(s);
end;
....
procedure TMyForm.MyButtonClick(Sender: TObject);
begin
// Checking my handle
ShowMessage(IntToStr(Handle));
end
C++ app sagt es mit einem Griff gefunden:
FENSTER 3.609.366 gefunden ... eine Nachricht gesendet. .. Drücken Sie die Eingabetaste, um fortzufahren ...
Derselbe Griff wird angezeigt, wenn ich MyButton (3609366) drücke, aber das Meldungsfeld wird nicht angezeigt. Aus irgendeinem Grund empfängt Delphi App die Nachricht nicht.
Haben Sie eine Idee warum?
S.S .: Sie laufen unter demselben Benutzerkonto.
Auf Seitenhinweisen erwartet der Delphi-Code 'AnsiChar'-Daten, daher sollten Sie' TCHAR' nicht im C++ - Code verwenden. Außerdem verwendet die VCL 'WM_COPYDATA' intern, also müssen Sie' dwData' vor der Interpretation von 'lpData' betrachten (Sie sollten' RegisterWindowMessage() 'für den 'dwData'-Wert verwenden). Und die 'WPARAM' von' WM_COPYDATA' muss die 'HWND' des Senders sein, nicht der Empfänger. –
Nützliche Informationen - Danke! –