如何在 Delphi COM 服务器应用程序中从 Getref 获取的指针调用 VBscript 函数
How to invoke a VBscript function from pointer obtained by Getref in a Delphi COM server app
我有一个 COM 服务器应用程序,需要 link 回调到特定的延迟绑定事件。
我的测试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;
我有一个 COM 服务器应用程序,需要 link 回调到特定的延迟绑定事件。
我的测试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;