Delphi OLE 自动化卡住 GUI

标签 delphi ms-word ole

我们在 Delphi 7 中使用一些 OLE 自动化来打开一个 word 文档,然后在加载后保存它,并将其加载到数据库中。

这工作正常,但部分要求是在 OLE 位发生时有一个进度条,如果 OLE 部分花费太长时间,还有一个超时。

我们遇到的问题是在 OLE 发生时整个 GUI 卡住。进度条什么都不做,然后在最后突然上升。

关于我们如何解决这个问题有什么想法吗?

最佳答案

我认为这很难干净地完成。据我所知,Word 自动化不会让您有机会取消长时间运行的事件。它也不会通知您进度。

也许您能做的最好的事情就是首先将自动化移到一个单独的线程中。然后在长时间运行的自动化过程中抛出一个字幕进度条。至少这会让用户知道正在发生某些事情。

就取消而言,您可以让用户从您的进度对话框中取消,然后让您的程序继续。您可以终止自动化线程,但这会使 Word 处于不良状态。我只是让它继续完成,然后忽略结果。从用户的角度来看,这将相当好地满足您的目标,即使它在幕后有点脏。

关于Delphi OLE 自动化卡住 GUI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15220440/

相关文章:

javascript - Ooxml 中不显示下划线

C# OleDB 删除命令

delphi - 我如何确定在没有源代码的 Delphi 程序中使用了哪些库?

delphi - Borland Delphi 7 - Windows 7 问题

java - 使用 Apache POI 和 XWPF 在 java 中获取单词的缩略图

java - 如何以编程方式更改Word文档中图像的URL

ruby - 用 Ruby 创建 COM 服务器?

sql - sp_OAGetProperty 返回 NULL,且 OUT 变量声明为 MAX

delphi - 基于TGraphicControl的对象容器

delphi - TColorBox 未触发 OnGetColors 事件