OLE Automation для запуска MS Word и вывода на передний план

Что такое «правильный» (рекомендуемый) метод для подключения к работающему экземпляру MS Word и вывода этого приложения на передний план? Я делаю что-то вроде следующего из приложения VBA:

...
objWord = GetObject ("Word.Application")
if (objWord is nothing) then
  objWord = CreateObject("Word.Application")
end if
objWord.Activate()
objWord.Visible = true
objWord.WindowState = 1 'maximized
...

Работая в Windows XP с Word 2007, это работает большую часть времени, но периодически не удается вывести окно Word на передний план (и вместо этого мигает свернутый значок Word на панели задач).

НОТА: Я частично решил эту проблему с помощью вызова API FindWindow Win:

hwnd = FindWindow("OpusApp", vbNullString)
If hwnd > 0 Then 
  SetForegroundWindow (hwnd)
end if

Это не 100%, потому что (как указано в drventure), если запущено несколько экземпляров Word, вы не можете быть уверены, к какому из них вы попадете. Поскольку, когда мой код запускает Word, он сначала использует GetObject, а затем в случае сбоя CreateObject, если для запуска запущен один экземпляр Word, я в порядке.

Ответы на вопрос(1)

Ваш ответ на вопрос