DLL에서 App으로 데이터를 보내야합니다. 여기서 "data"는 변형의 배열입니다.Delphi : Windows API "SendMessage"를 사용하여 DLL에서 응용 프로그램으로 변종을 보내는 방법?
나는 행운과 함께 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'는 하나의 인접한 데이터 덩어리를 보냅니다. 델파이 배열은 그렇게 구조화 될 것 같지 않습니다. –
배열을 serialize하고 WM_COPYDATA를 사용하십시오. 또는 COM을 사용하면 쉽게 사용할 수 있습니다. –