ActiveDocument.ActiveWindow.Hwnd崩溃

ActiveDocument.ActiveWindow.Hwnd crash

我在 MS Word 中使用 ActiveDocument.ActiveWindow.Hwnd 获取活动文档 Window 的句柄,但它在 Word 2007 中确实崩溃了。我尝试使用 long 而不是 int,试图捕捉异常但没有抛出异常。

Public WithEvents wa As Microsoft.Office.Interop.Word.Application
wa = HostApplication

    Public Function getWindowHWND() As Integer
        Try
            getWindowHWND = wa.ActiveDocument.ActiveWindow.Hwnd
        Catch ex As Exception
            MsgBox(1)
            getWindowHWND = -1
        Finally
        End Try
    End Function

我是不是做错了什么?这是一个错误吗?如果无法修复,如何以等效方式获取句柄?提前谢谢你。

Word 2007 中不存在这样的属性。

从 Word 2013 开始,您可以使用从 Application 对象公开的 WindowHwnd 属性:

var windowHandle = wordApplication.ActiveWindow.Hwnd;

中间的ActiveDocument属性就不用了。没有文档打开时失败。

在早期的 Word 版本中,您可以使用 .NET BCL 中的 Process class 来检索主 window 句柄,例如:

  var word = new Microsoft.Office.Interop.Word.Application(); 
  word.Visible = true; 
  word.Activate();
  word.Application.Caption = "My Word";

  foreach( Process p in Process.GetProcessesByName( "winword" ) )
  {
    if( p.MainWindowTitle == "My Word" )
    {
      Debug.WriteLine( p.Handle.ToString() );
    }
  }