我现在要实现的是:怎么样才能够通过程序把WebBrowser中所显示的页面完整的复制到word文档中的指定位置,包括所有的文字和图片.

解决方案 »

  1.   

    转贴剪贴板中可以同时存放多种数据,TClipboard类型
    在FormatCount记录有数据的项数,Formats[]则是这些数据的类型,
    WINAPI的GetClipboardFormatName函数可以得到数据类型的名字,IE
    复制下来的数据一般有HTML format的数据,把它复制下来就是网页。
    ASTEXT只是获得调用GetClipboardData(CF_TEXT),得到的一定是文本
    数据。下面程序可得到贴板中的网页源码,前面还有加有源URL地址及
    其它内容,一看就明白。procedure TForm1.Button1Click(Sender: TObject);
    var fn,html:string;
        i,fl,size:integer;
        data:thandle;
        p:pointer;      //数据指针
    begin
      clipboard.Open;
      memo1.text:='';
      for i:=0 to Clipboard.FormatCount-1 do begin
        setlength(fn,100);
        fl:=GetClipboardFormatName(clipboard.Formats[i],@fn[1],200);
        setlength(fn,fl);
        if pos('HTML',fn)>0 then begin  //是HTML数据
          Data := GetClipboardData(clipboard.formats[i]);  //得到数据内存句柄
          try
            p:=GlobalLock(Data);
            size:=globalsize(data);  //得到数据大小
            setlength(html,size);    //设置保存区域
            move(p^,html[1],size);   //复制数据
          finally
          GlobalUnlock(Data);
          end;
          break;
        end;
      end;
      memo2.text:=html;
      clipboard.close;
    end;
      

  2.   

    to:darkliu(钢铁工人甲)
    谢谢你提供的答案,不过你给的并不是我想要得,我现在已经搞定了,不过方法比较笨,但挺简单,现在帖出来大家共享,如果谁有更好的方法可以告诉我一声,不胜感谢.
    var
      ItemIndex : OleVariant;
    begin
      FLoadWordData(ExtractFilePath(ParamStr(0)) + TemplateFile);   //通过模板建立word,
      try
        WordDocu.ConnectTo(FDoc);     //FDoc:为建立的word文档的句柄
      except
        //showmessage('文档连接失败!');
        Exit;
      end;
      WebBrowser1.ExecWB(OLECMDID_SELECTALL, OLECMDEXECOPT_DODEFAULT);  //全选网页
      WebBrowser1.ExecWB(OLECMDID_COPY, OLECMDEXECOPT_DODEFAULT);     //复制网页
      WordDocu.Range.Paste;            //word文档粘贴
      WebBrowser1.ExecWB(OLECMDID_UNDO, OLECMDEXECOPT_DODEFAULT);    //取消全选
    end;