我想在WebBrowser中打开指定url的一个文件(如.doc,.pdf等多种格式)该怎么做?
我利用WebBrowser1.Navigate('http://127.0.0.1:8080/123.doc');可却提示我“您不能关闭microsoft word,因为有一个对话框仍处于活动状态……”,请问这是怎么回事?另外,我只是想让用户对打开的文件进行查看,不想他们有修改和保存的权限,有什么办法么?

解决方案 »

  1.   

    从别人那儿抄来的,觉得蛮好用的,就留下来了,可以参考:
    (做的时候是用来显示Gif动画的,但也能使用其他格式的文件)procedure ShowGIF(gWebBrowser: TWebBrowser; GIFFileName : String );
    var
      TargetFrameName,PostData,Heads,Flags : OleVariant;
      URL : widestring;
    begin
      TargetFrameName := '';{指定Frame的空字符串时,则在当前Frame中打开动画文件}
      PostData := false;{不发送数据}
      Heads := '';{Header信息为空}
      Flags := 0;{Flags设为0}
      URL := GIFFileName;
      with gwebbrowser do{在指定窗口中的IE浏览器控件中显示动画}
      begin
        navigate(URL,Flags,TargetFrameName,PostData,Heads);{显示动画文件}
      end;
    end;
      

  2.   

    to xxmmmx(踢踏) :还是不行啊,.doc还是打不开。而且请问“PostData := false;{不发送数据}”是什么意思?什么叫不发送数据?
      

  3.   

    这个是打开本地文件,我试过打开Gif是没问题的。
      

  4.   

    你不如用automation对象来实现吧?用webbrowser来实现的话控制起来更麻烦一点啦。
      

  5.   

    to phy(我希望我是高手,却怎么学都是菜鸟。) :请问用automation该怎么做呢?我现在程序要实现的功能是:通过一个URL访问WEB服务器的一个文件,并把它在delphi中打开,这个文件可能是doc,pdf,jpg等多种格式。而且webbrowser我现在还发现一个问题:在有的机器上用
    WebBrowser1.Navigate('http://127.0.0.1:8080/123.doc');时会出现个提示框问你是下载还是打开。请问各位有什么办法能屏蔽这个提示框么?
      

  6.   

    对于WebBrowser来讲,如果远程文件是它说不认识的(我也只能这么说,方便你理解了)那么它就会选择是下载该文件,而不是打开该文件,根据你所说的情况,你最好看看你的8080端口是否是开放的,如果是开放的,那么你可以试验用IE是否可以打开一个Word文档,如果可以,那么应该也可以用WebBrowser打开一个Word文档,如果IE 也不能打开Word文档,那么WebBroswer就无法打开Word文档(在线打开,我记得好像我从来没有用WebBrowser打开过Word文档啊)
      

  7.   

    TO mrtxc(阿春) ( ) :期待你的答案,谢谢啦TO DelphiBoy2003(我是李逍遥) :都安装了officeXP的两台机器,一台可以直接打开,而另一台却会出个对话框问你是下载还是打开文件,选打开后就会在IE或WebBrowser里直接打开。我感觉是注册表的问题,不知道谁有这方面的经验么当然,我还在第三台机器上测试,结果就是“您不能关闭microsoft word,因为有一个对话框仍处于活动状态……”