WebBrowser中打开word文档的问题:怎样关闭已打开的word文档(300分)

  • 主题发起人 主题发起人 gboyjuan
  • 开始时间 开始时间
BROWSER本来就是个OLE CONTAINER
 
建议看看OLE有关资料
 
是啊
就因为WEBBROWSER显示WORD文档比较方便
但现在就这么一个问题困扰着我
 
其实你可以自己操纵WORD读取文挡啊
 
奇怪,我测试得好好的啊,再修改一下,贴上我测试的代码
var
Doc: OleVariant;
begin
if Assigned(WBR_DOC.Document) then
begin
Doc:=WBR_DOC.Document;
WBR_DOC.Navigate('');
Doc:=NULL;

while WBR_DOC.Document<>Nil do
Application.ProcessMessages;
end;

if CopyFile('C:/123.doc','C:/456.doc',False) then
WBR_DOC.Navigate('C:/456.doc');
end;
 
高手们:
难道就没有好的办法吗?
分不够可以再加呀
只要能解决问题,当然要尽可能的简单
 
to pihome:
你是用WebBrowser先打开了一个word文件,然后再关闭这个文件,再打开另外一个word文件吗
 
就上面这段代码,第1个按下直接复制打开文件,以后再按下先把原来打开的文件关闭,再复制文件重新打开,替换123.doc为其他文件,可以证实是打开文件是正确的
 
to pihome:
好象已解决,等我把这段代码放到我的程序中试试
没问题,马上给分
 
to pihome:
可能在关闭WORD文档时需要一定的时间
所以在短时间内连续关闭、打开word文档时会出问题
不过你的方法可行,我只需在关闭word文档时给个延时,再打开新的word文档
如果你还有好方法,就继续哦
 
to pihome:
老兄,我可算是服了它了,延时根本不起作用
随机性太强了,有时候一点问题没有,有时候一打开第2个文件就出问题:
不显示文件内容
关闭程序时,word还跳出来报错
帮我再想想,谢了,如果问题解决给你500分
 
if Assigned(WBR_DOC.Document) then
begin
Doc:=WBR_DOC.Document;
WBR_DOC.Navigate('');
Doc:=NULL;

while WBR_DOC.Document<>Nil do //这段程序不起作用吗?就是起延时作用的
Application.ProcessMessages;
end;
原来那一段中
while not CopyFile(...) do
begin
if GetLastError = 1224 then //这一段也是起延时作用的,只是这一段程序有可能造成死循环:(
Continue
else
Exit;
end;
还没想到有什么其他方法[:(]
 
to pihome
while WBR_DOC.Document<>Nil do
Application.ProcessMessages
这段程序到是起作用了,但有时就是出问题
 
请问如何用WEBBROWSER显示一WORD文档的内容.能给几行代码吗!很急!多谢!不胜感激!
 
我的EMAIL:zrt_08@163.com . 谢谢!
 
to zrt08:
上面不有代码吗,自己仔细看了
不过有问题哟,现在还没解决
 
我测试过多次,一直没碰到过你提的问题,上面的代码应该是没问题的
while WBR_DOC.Document<>Nil do //在这个循环完了之后确实是已将文件关闭了
Application.ProcessMessages;
出现你上面所说的情况,可能是有其他WORD也打开了此文件,或者是你调试的时候没有正常结束,你可以试试,在再次打开出问题时看任务管理器中是不是还有winword,将它强行结束,再检查检查你的代码是不是哪里还有不妥当的地方吧
 
to pihome
我是担心其它的word影响的,我把所有的word程序都关闭了
而且也删掉了进程里的winword.exe
再运行程序的时候,来回打开那两个文件,有时候很好,但有时候在打开第2个时就不显示了,有时候是打开第3个或第4个的时候就不显示了
在第1次打开文件时,进程里就一直有winword.exe,如果程序正常,退出时这个进程就自动删除了,如果出现上述问题时,程序退出时,这个进程还在那,并且word会出来报错:
您不能关闭Microsoft Word,因为有一个对话框仍处于活动状态。
请先切换到Microsoft Word,关闭该对话框。
 
to pihome
算了,你也帮助我解决了关闭word文档的问题,还是把分给你吧
剩下的问题,我再重开一个问题,问问其他的DFW吧
谢谢了!
 
后退
顶部