///////////////////////
procedure GetCopyDataParam(AMsg:TWMCopyData;var wParam:integer;var dwData:cardinal);
function GetCopyData(AMsg:TWMCopyData):string;overload;
procedure GetCopyData(AMsg:TWMCopyData;var P:pointer;var len:integer);overload;
///////////////////////////
function SendCopyData(AHandle:Cardinal;AStr:string;wParam:integer=0;dwData:cardinal=0):integer;overload;
function SendCopyData(AHandle:Cardinal;P:pointer;Len:integer;wParam:integer=0;dwData:cardinal=0):integer;overload;
implementation
function SetData(p:pointer;len:integer;dwData:cardinal):TCopyDataStruct;
begin
result.cbData:=len;
result.lpData:=p;
result.dwData:=dwData;
end;
function SendCopyData(AHandle:Cardinal;AStr:string;wParam:integer=0;dwData:cardinal=0):integer;overload;
var
len:integer;
begin
function SendCopyData(AHandle:Cardinal;P:pointer;Len:integer;wParam:integer=0;dwData:cardinal=0):integer;overload;
var
cs:tcopydatastruct;
begin
cs:=setdata(p,len,dwdata);
result:=sendmessage(ahandle,wm_copydata,wparam,Cardinal(@cs));
end;
procedure GetCopyDataParam(AMsg:TWMCopyData;var wParam:integer;var dwData:cardinal);
begin
dwdata:=amsg.CopyDataStruct.dwData;
wparam:=tmessage(amsg).WParam;
end;
procedure GetCopyData(AMsg:TWMCopyData;var P:pointer;var len:integer);
begin
p:=amsg.CopyDataStruct.lpData;
len:=amsg.CopyDataStruct.cbData;
end;
function GetCopyData(AMsg:TWMCopyData):string;
var
i,len:integer;
type
pstr=array of char;
begin
result:='';
len:=amsg.CopyDataStruct.cbData;
if len<=0 then exit;
setlength(result,len);
for i:=1 to len do
begin
result[i]:=pstr(amsg.CopyDataStruct.lpData)[i-1];
end;
end;