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

问题描述:

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

我已经有应用程序对象,我已经打过电话App.Activate。激活会将窗口放到窗口堆栈的顶部,但如果Word被最小化,则不会。我可以将WindowState设置为最大化,最小化和正常,但我真正需要做的是将窗口恢复到用户最小化之前的状态(这将等同于用户单击任务栏中的应用程序按钮) 。

这可能使用Word自动化吗?我实际使用C++向自动化

所以我能够在需要时调用Win32 API函数。

如果没有恢复窗口直接的方式接下来的问题是,“我怎么能得到的ActiveWindow的窗口句柄?

我想出到目前为止是如下的最佳方式。

获取使用Application.ActiveWindow

这个窗口对象有一个名为Caption属性的活动窗口。标题出现在文档窗口的标题中。

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

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

您还必须调用Application.Activate。

这个方案并不完美,比如我真的不喜欢假设窗口标题总是包含文本“的Microsoft Word”,但我也不想挑错窗口。

+0

您最好使用EnumWindows()但对于每个调用GetClassName的窗口,然后检查将其标识为Word窗口的类名称“OpusApp”。 – Nick 2009-11-20 14:43:52

尝试::ShowWindow(handle, SW_RESTORE)

+0

我已经想到了这种方法,但对象模型似乎没有提供获取窗口句柄的方法,我需要它才能调用:: ShowWindow() – jmatthias 2009-06-11 03:16:38