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
对象公开的 Window
的 Hwnd
属性:
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() );
}
}
我在 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
对象公开的 Window
的 Hwnd
属性:
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() );
}
}