我有一个 COM 服务器应用程序,需要将回调链接到后期绑定(bind)的特定事件。
我的测试VB脚本如下
Sub Main
dim Frm
Set Frm=NewForm("Form1")
Frm.OnActivate = getRef("Frm_OnActivate")
a= Frm.Showmodal
end Sub
sub Frm_OnActivate
MsgBox("Activate")
end Sub
我的 com 服务器具有 OleVariant 类型的 onActivate 属性。
function TALform.Get_OnActivate: OleVariant;
begin
result:=FonActivate;
end;
procedure TALform.Set_OnActivate(Value: OleVariant);
begin
FonActivate:=Value;
Fform.OnActivate:=OnactivateEx
end;
我的问题是,获得该值后,如何从 Olevariant 中存储的值(调试器显示其类型为 VarDispatch)调用 VBscript 函数?
最佳答案
尝试这样的事情:
var
Param: TDispParams;
MethodResult: OleVariant;
Result: HRESULT;
begin
Param.rgvarg := nil;
Param.rgdispidNamedArgs := nil;
Param.cArgs := 0;
Param.cNamedArgs := 0;
Result := IDispatch(FonActivate).Invoke(0, GUID_NULL, SysLocale.DefaultLCID, DISPATCH_METHOD, Param, @MethodResult, nil, nil);
end;
关于delphi - 如何在 Delphi COM 服务器应用程序中从 Getref 获取的指针调用 VBscript 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61656664/