取脚本函数,调用我觉得不太可能function TForm1.GetHtml(const WebBrowser: TWebBrowser): string;
const
  BufSize = $10000;
var
  Size: Int64;
  Stream: IStream;
  hHTMLText: HGLOBAL;
  psi: IPersistStreamInit;
begin
  if not Assigned(WebBrowser.Document) then Exit;
  OleCheck(WebBrowser.Document.QueryInterface (IPersistStreamInit, psi));
  try
  //OleCheck(psi.GetSizeMax(Size));
  hHTMLText := GlobalAlloc(GPTR, BufSize);
  if 0 = hHTMLText then RaiseLastWin32Error;
  OleCheck(CreateStreamOnHGlobal(hHTMLText, True, Stream));
  try
    OleCheck(psi.Save(Stream, False));
    Size := StrLen(PChar(hHTMLText));
    SetLength(Result, Size);
    CopyMemory(PChar(Result), Pointer(hHTMLText), Size);
  finally
    Stream := nil;
  end;
  finally
  psi := nil;
  end;
  end;Procedure Tform1.SetHtml(Const WebBrowser:TWebBrowser; Const Html: String);
Var
    Stream          : IStream;
    hHTMLText       : HGLOBAL;
    psi             : IPersistStreamInit;
Begin
    If Not Assigned(WebBrowser.Document) Then Exit;    hHTMLText := GlobalAlloc(GPTR, Length(Html) + 1);
    If 0 = hHTMLText Then RaiseLastWin32Error;    CopyMemory(Pointer(hHTMLText),
        PChar(Html), Length(Html));    OleCheck(CreateStreamOnHGlobal
        (hHTMLText, True, Stream));
    Try
        OleCheck(WebBrowser.Document.
            QueryInterface(IPersistStreamInit, psi));
        Try
            OleCheck(psi.InitNew);
            OleCheck(psi.Load(Stream));
        Finally
            psi := Nil;
        End;
    Finally
        Stream := Nil;
    End;
End;

解决方案 »

  1.   

    我不是要读取script函数,而是要命令WebBrowser自己执行一个script函数。
    如果在一个网页上放一个ActiveX控件,可以在ActiveX的代码中用HLinkNavigateString函数执行一个script函数,如果要在WebBrowser的外部用代码实现该怎样作呢?
      

  2.   

    好像不是很难?1、首先得到Script函数的代码。调用IHTMLScriptElement::get_src()方法可以得到代码。通过枚举得到所有的IHTMLScriptElement。2、调用IHTMLWindow2的函数execScript()来执行那个代码HRESULT execScript(
        BSTR code,
        BSTR language,
        VARIANT *pvarRet
    );