Einzelnen Beitrag anzeigen

Billi Berserker
(Gast)

n/a Beiträge
 
#1

WM_COPYDATA Empfänger verändert Daten

  Alt 22. Aug 2007, 15:03
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?
  Mit Zitat antworten Zitat