在 这根线(大约一年前发布的)中有一个关于在非交互式会话中运行 Word 可能带来的问题的讨论。给出的(相当强烈的)建议是不要这样做。在一篇文章中写道: “ Office API 都假设您在桌面上以交互式会话方式运行 Office,并配有显示器、键盘和鼠标,最重要的是,还有一个消息泵。”我不确定那是什么。(我用 C # 编程只有一年的时间; 我的其他编程经验主要来自 ColdFusion。)
我的程序运行通过大量的 RTF 文件提取两个信息用于构造一个医疗报告编号。我没有尝试去弄清楚 RTF 中的格式化指令是如何工作的,而是决定直接在 Word 中打开它们,然后从中抽出文本(实际上并没有启动 GUI)。有时候,程序在处理一个文件的过程中会出现问题,并且留下一个连接到该文件的 Word 线程处于打开状态(我仍然需要弄清楚如何关闭那个线程)。当我重新运行该程序时,当然我收到了一个通知,说有一个线程正在使用该文件,我是否想打开一个只读副本?当我说 Yes 的时候,Word GUI 突然不知从哪里冒出来,开始处理文件。我想知道为什么会发生这种情况; 但是看起来好像一旦对话框弹出,消息泵也开始将主 GUI 推向 Windows?