将特定的Word实例带到前面的VB

时间:2016-01-11 09:16:33

标签: vb.net ms-word

我使用以下命名空间:Imports Microsoft.Office.Interop

我需要一个功能,它将特定的Word实例放在前面。 最佳解决方案是

Public Sub toFront(ByVal wdObj as Word.Application, ByVal filePath as String)
     'sends by filePath specified Word-Instance to Front
End Sub

我知道有Word.Application.Activate,但这似乎并不是一直有效,而且它只会激活ActiveDocument。

我已经尝试过以下函数,其中wdObj是Word.Application

 wdObj.Activate()
 wdObj.Application.Documents(My.Settings.DocPath).Activate()

1 个答案:

答案 0 :(得分:0)

Interop中没有这样的功能。尝试使用WinApi:

void BringWindowToTop (Microsoft.Office.Interop.Word.Document doc) {

  // To make it active document
  doc.Activate(); 

  // I'm not 100% sure, but I think MainWindowHandle gives
  // a handle of currently active window of word
  IntPtr hwnd = Process.GetCurrentProcess().MainWindowHandle;

  BringWindowToTop(hwnd);
}
[DllImport("user32.dll", SetLastError = true)]
static extern bool BringWindowToTop(IntPtr hWnd);