0

我从我的 C++ 代码中调用两个 DDE 命令:

FormDde->DdeClientConv1->ExecuteMacro("[AddAddIn \"C:\\Projects\\wscs-trunk\\bin\\ws.dot\", 1][FileOpen .Name = \"C:\\Projects\\wscs-32x\\doc\\MyDoc.doc\]",false)
FormDde->DdeClientConv1->ExecuteMacro("[ToolsMacro .Name = \"FillTemplateAttests\", .Run]", false)

第一个命令打开模板 ws.dot 和文档 MyDoc.doc。模板 ws.dot 包含我尝试在第二个 DDE 命令调用中执行的宏FillTemplateAttests 。这两个命令正常运行了 3 个多月。几天前,第二个命令中断了功能。我没有更改这部分代码或宏FillTemplateAttests中的任何内容。功能中断意味着当我调用第二个命令时,即使ExecuteMacro调用返回 true 也不会发生任何事情(这意味着根据文档应该一切正常)。当我在另一台计算机上使用相同的文档 ws.dot 和 MyDoc.doc 运行相同的程序时,一切正常。当我两次调用第二个命令时,它实际上被执行(但只有一次 - 第一次调用被忽略):

FormDde->DdeClientConv1->ExecuteMacro("[AddAddIn \"C:\\Projects\\wscs-trunk\\bin\\ws.dot\", 1][FileOpen .Name = \"C:\\Projects\\wscs-32x\\doc\\MyDoc.doc\]",false)
FormDde->DdeClientConv1->ExecuteMacro("[ToolsMacro .Name = \"FillTemplateAttests\", .Run]", false)
FormDde->DdeClientConv1->ExecuteMacro("[ToolsMacro .Name = \"FillTemplateAttests\", .Run]", false)

在我看来,Word 安装已损坏。你能帮我找到问题的核心吗?

附录:

当我连续调用这 3 个命令时,它们都被执行:

FormDde->DdeClientConv1->ExecuteMacro("[AddAddIn \"C:\\Projects\\wscs-trunk\\bin\\ws.dot\", 1][FileOpen .Name = \"C:\\Projects\\wscs-32x\\doc\\MyDoc.doc\]",false)
FormDde->DdeClientConv1->ExecuteMacro("[Beep]", false);
FormDde->DdeClientConv1->ExecuteMacro("[ToolsMacro .Name = \"FillTemplateAttests\", .Run]", false)
4

1 回答 1

0

即使我不知道为什么,这也解决了我的问题:

FormDde->DdeClientConv1->ExecuteMacro("[AddAddIn \"C:\\Projects\\wscs-trunk\\bin\\ws.dot\", 1][FileOpen .Name = \"C:\\Projects\\wscs-32x\\doc\\MyDoc.doc\]",false)
FormDde->DdeClientConv1->ExecuteMacro("[]", false);
FormDde->DdeClientConv1->ExecuteMacro("[ToolsMacro .Name = \"FillTemplateAttests\", .Run]", false)
于 2012-05-14T12:11:11.243 回答