gpt4 book ai didi

.net - 使用 Office 互操作获取特定窗口句柄

转载 作者:行者123 更新时间:2023-12-04 14:17:38 26 4
gpt4 key购买 nike

我正在通过执行以下操作使用 Office 互操作创建 Word 的新实例:

var word = Microsoft.Office.Interop.Word.Application();
word.Visible = true;
word.Activate;

我可以得到这样的窗口句柄:
var wordHandle = Process.GetProcessesByName("winword")[0].MainWindowHandle;

问题是代码的工作假设没有其他 Word 实例正在运行。如果有多个,它不能保证它返回的句柄是针对我已经启动的实例的。我试过使用 GetForegroundWindow检测到 WindowActivate 后来自我的对象的事件,但这一切都在设置为作为最顶层窗口运行的 WPF 应用程序中运行,所以我只需获取 WPF 窗口的句柄。还有其他方法可以获取我的单词实例的句柄吗?

最佳答案

从 2013 年开始,您可以使用 Hwnd Window 的属性(property)从 Application

var windowHandle = wordApplication.ActiveWindow.Hwnd;

Hwnd 返回一个指示指定窗口的窗口句柄的 Integer。
有了这个 int您可以使用 NativeWindow它提供了窗口句柄的低级封装。
var nativeWindow = new NativeWindow();
nativeWindow.AssignHandle(new IntPtr(windowHandle));

关于.net - 使用 Office 互操作获取特定窗口句柄,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8673726/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com