如何使用自动化“恢复”MS Word的文档窗口

时间:2009-06-11 02:25:15

标签: automation ms-word ms-office

我希望能够使用自动化“恢复”MS Word的文档窗口。

我已经有了应用程序对象,我尝试过调用App.Activate。激活将窗口置于窗口堆栈的顶部,但如果Word最小化则不会。我可以将WindowState设置为Maximized,Minimized和Normal,但我真正需要做的是将窗口恢复到用户最小化之前的状态(这相当于用户点击任务栏中的应用程序按钮)

这可以使用Word自动化吗?

我实际上使用C ++进行自动化,因此如果需要,我可以调用Win32 API函数。

如果没有直接的方法来恢复窗口,那么问题就变成了'我如何获得ActiveWindow的窗口句柄?'

2 个答案:

答案 0 :(得分:0)

尝试::ShowWindow(handle, SW_RESTORE)

答案 1 :(得分:0)

到目前为止,我提出的最佳方法如下:

使用Application.ActiveWindow

获取活动窗口

此窗口对象具有名为Caption的属性。标题出现在文档窗口的标题中。

然后我使用Win32函数EnumWindows()来搜索Win32窗口。我使用Win32函数GetWindowText()获取EnumWindows()返回的每个窗口的窗口文本。我试图在窗口文本中找到标题,并作为额外的检查,我确保窗口文本还包含字符串'Microsoft Word'。

一旦找到窗口,我就会拥有它的Win32窗口句柄,然后我可以将其传递给Win32函数ShowWindow(hWnd,SW_RESTORE)。

您还必须致电Application.Activate。

这个解决方案并不完美,例如我不想假设窗口标题总是包含文本'Microsoft Word',但我也不想选择错误的窗口。