0
我需要將數據從DLL發送到應用程序,其中「數據」是一個變體數組。Delphi:如何使用Windows API「SendMessage」將DLL中的Variant數組發送給應用程序?
我試圖使用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'發送一個連續數據塊。德爾菲陣列不太可能像這樣構造。 – 2014-09-03 12:49:01
序列化數組並使用WM_COPYDATA。或者使用COM來獲得簡單的生活。 – 2014-09-03 12:55:46