【发布时间】:2014-09-03 12:43:33
【问题描述】:
我需要将数据从 DLL 发送到 App,其中“数据”是一个变体数组。
我尝试使用 SendMessage / WM_COPYDATA,但没有成功!
这是我目前得到的:
// sender's side (dll)
procedure sendData(apphandle: THandle);
var V: Variant;
begin
V = VarArrayOf([1,'Some Text', 123.45, true]);
copyDataStruct.dwData := 100;
copyDataStruct.cbData := ?; <-- what here?
copyDataStruct.lpData := ?; <-- and here? how to put "V"?
SendMessage(apphandle, WM_COPYDATA, Integer(apphandle), Integer(@copyDataStruct)) ;
end;
// receiver's side (same app where dll was called)
procedure WMCopyData(var Msg: TWMCopyData) ;
var V : Variant;
begin
if (Msg.CopyDataStruct.dwData = 100) then
begin
V := Msg.CopyDataStruct.lpData; <-- how to get "V" from lpData?
// do some work with "V" here...
end;
end;
【问题讨论】:
-
WM_COPYDATA发送单个连续数据块。 Delphi 数组不太可能是这样的结构。 -
序列化数组并使用 WM_COPYDATA。或者使用 COM 轻松生活。
标签: delphi winapi dll sendmessage