代码之家  ›  专栏  ›  技术社区  ›  jmatthias

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

  •  0
  • jmatthias  · 技术社区  · 15 年前

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

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

    是否可以使用“自动化”一词?

    实际上,我使用C++来实现自动化,所以如果需要的话,我可以调用Win32 API函数。

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

    2 回复  |  直到 15 年前
        1
  •  0
  •   Assaf Lavie    15 年前

    尝试 ::ShowWindow(handle, SW_RESTORE)

        2
  •  0
  •   jmatthias    15 年前

    到目前为止,我提出的最好方法是如下。

    使用application.active window获取活动窗口

    此窗口对象有一个名为Caption的属性。标题显示在文档窗口的标题中。

    然后,我使用win32函数enumWindows()搜索win32窗口。我使用win32函数get window text()获取EnumWindows()返回的每个窗口的窗口文本。我试图在窗口文本中找到标题,作为额外的检查,我确保窗口文本也包含字符串“Microsoft Word”。

    找到窗口后,我就拥有了它的win32窗口句柄,然后可以将其传递给win32函数showwindow(hwnd,sw_restore)。

    您还必须调用application.activate。

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