最近在项目中,需要对html文件中的JS 函数,并返回数据结果;
function Tfrmgis.InvokeScript(Doc: IHTMLDocument2; aName,
aParam: string): Variant;
var
Disp : IDispatch;
Member : WideString;
TheDispId : Integer;
DisParam:TDispParams;
VariantArg : TVariantArg;
Args : WideString;
begin
Disp:=(Doc as IHTMLDocument).Script;
if Disp <> nil then
begin
Member:=aName;
if (Disp.GetIDsOfNames(GUID_NULL,@Member,1,LOCALE_SYSTEM_DEFAULT,@TheDispId))=S_OK then
begin
FillChar(DisParam,SizeOf(DispParams),0);
FillChar(VariantArg, SizeOf(VariantArg), 0);
DisParam.cArgs:=1;
DisParam.rgvarg := @VariantArg;
Args := aParam;
VariantArg.bstrVal := pointer(Args);
OleCheck(Disp.Invoke(TheDispId,GUID_NULL,0,DISPATCH_METHOD,DisParam,@Result,nil,nil));
end;
end;
end;
调用函数;
procedure Tfrmgis.btreviewClick(Sender: TObject);
var
data : string;
Doc : IHTMLDocument2;
begin
if Supports(WebBrowser1.Document, IHTMLDocument2, Doc) then
begin
data := InvokeScript( doc,'getPoint','');
if not string.IsNullOrEmpty(Data) then
begin
data := LeftStr(data,Length(data)-1);
end;
end;
end;
其中,为js 函数;引用的单元文件:Winapi.ActiveX,System.StrUtils; 引用地址:http://www.360doc.com/content/11/1118/10/7662927_165403499.shtml
其他的一些常见交互操作:
https://blog.csdn.net/iseekcode/article/details/4740269