gpt4 book ai didi

c# - 从 IntPtr 句柄获取控件/表单对象

转载 作者:可可西里 更新时间:2023-11-01 09:25:45 25 4
gpt4 key购买 nike

我尝试使用以下代码从显示的 Word 应用程序窗口中获取托管控件:

Process[] processes = null;
processes = Process.GetProcessesByName("WINWORD");
Process wordProc = processes[0];
Control wordControl = Control.FromHandle(wordProc.MainWindowHandle);

不幸的是,wordControl 始终为 null... 据我所知,如果未找到与句柄相关的控件,FromHandle 将返回 null。但实际上我猜应该有一个相关的控件,因为我可以在我的屏幕上看到这个窗口。

因此我的问题是,如果我在尝试获取句柄或控件时做错了什么。或者,也许我的一般方法不适用于某些基于 .NET/Windows 环境中某处的原因,目前未知。

最佳答案

你想做的事是不可能的。您不能将在其自己的进程中运行的 Word 实例转换为 C# WinForms 控件 - 这将是完全不安全的。

根据您想要执行的操作,您可以采用两种方法:

  • 如果您想影响现有 Word 实例的行为,则可以使用 SendMessage() 和其他各种 User32.DLL 函数向它发送一些消息。使用 Pinvoke / DLL Import来完成这个。

  • 如果您尝试在您编写的应用程序中使用 Word 功能(例如创建 word 文档),请使用 Word interop libraries :

编辑

如果您对处理现有 Word 实例中的按键事件感兴趣,可以使用 Low Level keyboard hook处理关键事件,指定您感兴趣的单词 procs 的句柄。

关于c# - 从 IntPtr 句柄获取控件/表单对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10518098/

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