2009-06-11 44 views
0

我希望能夠使用自動化'恢復'MS Word的文檔窗口。如何'恢復'MS Word的文檔窗口使用自動化

我已經有應用程序對象,我已經打過電話App.Activate。激活會將窗口放到窗口堆棧的頂部,但如果Word被最小化,則不會。我可以將WindowState設置爲最大化,最小化和正常,但我真正需要做的是將窗口恢復到用戶最小化之前的狀態(這將等同於用戶單擊任務欄中的應用程序按鈕) 。

這可能使用Word自動化嗎?我實際使用C++向自動化

所以我能夠在需要時調用Win32 API函數。

如果沒有恢復窗口直接的方式接下來的問題是,「我怎麼能得到的ActiveWindow的窗口句柄?

回答

0

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

獲取使用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

0

嘗試::ShowWindow(handle, SW_RESTORE)

+0

我已經想到了這種方法,但對象模型似乎沒有提供獲取窗口句柄的方法,我需要它才能調用:: ShowWindow() – jmatthias 2009-06-11 03:16:38