Ich lege mir gerade etwas die Karten bei der implementierung eines AppBar message handlers.
Meine Anwendnung empfängt über WM_COPYDATA ein record welches auch bisher Problemlos ausgelesen werden kann.
Nun muß meine Anwendung jedoch die Daten die sie per Pointer bekommen hat verändern so das die Anwendung welches die Daten geschickt hat diese Veränderung am Ende mitbekommt. Und genau daran scheitert ich gerade etwas.
Ich hab mir soweit überlegt einfach auf die Daten mittels eines Pointers zuzugreifen und sie direkt zu ändern.
Delphi-Quellcode:
type
TAppBarDataV2 = record
cbSize : DWord;
Wnd : HWND;
uCallBackMessage : UINT;
uEdge : UINT;
rc : TRECT;
lparam : LPARAM;
dw64BitAlign : DWORD;
end;
pAppBarDataV2 = ^TAppBarDataV2;
TAppBarMsgDataV2 = record
abd : TAppBarDataV2;
dwMessage : DWORD;
hSharedMemory : HWND;
dwSourceProcessID : DWORD;
dw64BitAlign : DWORD;
end;
pAppBarMsgDataV2 = ^TAppBarMsgDataV2;
procdure IncomingMessage(msg : TMessage);
var
AppBarMsgData : pAppBarMsgDataV2;
data: pCopyDataStruct;
begin
Data := pCopyDataStruct(Msg.LParam);
AppBarMsgData := pAppBarMsgDataV2(Data.lpData);
// Daten ändern
AppBarMsgData.abd.rc.Left := 123;
msg.result := 1;
end;
In der Anwendung welche die WM_COPYDATA Nachricht geschickt hat kommt die Änderung nur leider nicht an.
Gibt es irgendetwas zu beachten wenn man die mit WM_COPYDATA empfangenen daten verändern will?