Я бы сказал, что WM_COPYDATA - идеальный способ сделать это.Вам просто нужно получить основную форму Delphi, скажем, для реализации обработчика сообщений для WM_COPYDATA.
В конце Delphi это выглядит примерно так:
TMyMainForm = class(TForm)
protected
procedure WMCopyData(var Msg: TWMCopyData); message WM_COPYDATA;
end;
procedure TMyMainForm.WMCopyData(var Msg: TWMCopyData);
begin
//do something with Msg.lpData
end;
Ваш VB код потребуетсячтобы получить дескриптор окна вашей главной формы Delphi.