Hallo @implementation,
Danke, so klappt es mit der Übertragung. Der Treffer erscheint. Wie ich es haben wollte!
Wie aber kann ich jetzt meine Daten empfangen?
Die NewWindowProc ist ja nicht als Formularmethode definiert.
Deshalb habe ich das hier versucht:
Delphi-Quellcode:
function NewWndProc(
Handle: hWnd; Msg: LongWord; wParam, lParam: Longint): Longint;
stdcall;
var
wMessage: TMessage;
//Msg,wParam,lParam in TMessage-Struktur
wmCopyDataMessage: TWMCopyData;
//die benötigte TWMCopyData-Struktur
begin
if Msg = WM_COPYDATA
then begin
showmessage('
Treffer');
if Assigned(Server)
then
//=== Das hier funktioniert nicht === Compiler sagt Argument cant' assigned to ===
//hier will ich meine WMCopyData() Methode aufrufen, die die Message
//mit meinen Daten übernimmt, um diese Daten verarbeiten zu können.
//with Server do
//WMCopyData(ConvertMessage(CopyMessage(Msg, wParam, lParam)));
//ABER SO HIER FUNKTIONIERT DIE DATENÜBERTRAGUNG PERFEKT:::
with Server
do
begin
wMessage := CopyMessage(Msg, wParam, lParam);
wmCopyDataMessage := ConvertMessage(wMessage);
with GDBDebugServer
do
WMCopyData(wmCopyDataMessage);
end;
//==========================================================
end else
Result := CallWindowProc(WProc,
Handle, Msg, wParam, lParam);
end;
function TServer.CopyMessage(Msg: LongWord; WParam, LParam: Longint
): TMessage;
begin
Result.msg:=Msg;
Result.wParam:=WParam;
Result.lParam:=LParam;
end;
function TServer.ConvertMessage(
const Msg: TMessage): TWMCopyData;
begin
move(msg, result, sizeof(TMessage));
end;
Danke Euch allen für Eure Hilfe!!!
@grl:
Habe die Änderung in win32Callback.inc übernommen und die LCL neu übersetzt!
Wer also das Beispiel hier nachvollziehen will, muss die genannte Änderung in win32CallBack.inc (siehe Beitrag von @grl) vorher vornehmen und dann die LCL neu übersetzen!