最近我正在做一个多媒体演示程序,需要用到一个webbrowser控件来显示程序内容并与应用程序"沟通",比如说:互发消息、交换变量……等等;就好象shockwaveflash控件的fscommand事件;不知道各位高手可否知道webbrowser控件是否有类似的事件?谢啦。

解决方案 »

  1.   

    你可以用OnStatusTextChange,通过改变状态栏和读取状态栏来交互信息
      

  2.   

    只有按照楼上的说的那样了。我是这样:
    JavaScript中:
    function ExecuteCmd(s)
    {
    window.status="#"+s;
    window.status='';//必须要立刻修改掉Status信息,否则的话OnStatusTextChange事件会多次触发

    }
    Delphi中:
    var sTmp,sCmd,sParam:string;iPos:integer;
    begin
      sTmp:=Trim(Text);
      If Length(sTmp)=0 then exit;
      If sTmp[1]<>'#' then exit;
      iPos:=Pos(' ',sTmp);
      If iPos=0 Then iPos:=Length(sTmp)+1;
      sCmd:=Trim(LowerCase(Copy(sTmp,2,iPos-1)));
      sParam:=Copy(sTmp,iPos+1,Length(sTmp)-iPos);
      //然后再来处理sCmd了.
    end;如果你要通知你的HTML中的脚本程序,可以这样:
    function ExecuteScript(Script,Lang:string):OleObject;
    begin
      Result:=(WebBrowser1.Document As IHTMLDocument2).parentWindow.execScript(Script,Lang)
    end;然后在执行
    ExecuteScript('myFunc();','JavaScript');这样HTML代码中的 function myFunc(){}就会北执行了.
      

  3.   

    不好意思,鳄鱼兄!;)
    你的方法看似可以,不过缺少可靠性,我需要的是利用mshtml接口与webbrowser通信的那种方法.所以暂时还不能结帖,请你谅解!
      

  4.   

    应用程序可以直接访问webbrowser的文档模型,但反过来不可以(除非你的程序提供了自动化接口),不过要将webbrowser中事件交给应用程序处理是可以做到的。