2009-09-01 5 views
1

Я использую ROT для поиска любых активных экземпляров MSWord. В некоторых версиях слова документ не регистрируется в таблице, вместо этого он регистрируется как шаблон NORMAL, поэтому я не могу найти документ по его названию, как описано в Microsoft. Кто-нибудь знает об исправлении для этого?Word Automation и таблица запущенных объектов

ответ

0

Является ли API FindWindowPartial любым приложением для вас? Это позволит вам искать окна с Microsoft Word в названии.

Option Explicit 

Private Const GW_HWNDNEXT = 2 
Private Declare Function GetWindow Lib "user32" (ByVal hwnd As Long, ByVal wCmd As Long) As Long 
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long 
Private Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long 

Function FindWindowPartial(ByVal Title As String) As String 
    Dim hWndThis As Long 

    hWndThis = FindWindow(vbNullString, vbNullString) 
    While hWndThis 
     Dim sTitle As String, sClass As String 
     sTitle = Space$(255) 
     sTitle = Left$(sTitle, GetWindowText(hWndThis, sTitle, Len(sTitle))) 
     If InStr(sTitle, Title) > 0 Then 
      FindWindowPartial = sTitle & "|" & FindWindowPartial 
     End If 
     hWndThis = GetWindow(hWndThis, GW_HWNDNEXT) 
    Wend 
End Function