C# PInvoke:是否有可能识别文本框控件

C# PInvoke:是否有可能识别文本框控件,c#,outlook,pinvoke,C#,Outlook,Pinvoke,我有一个Outlook插件,其中包含一个带有文本框的功能区。 我想在代码隐藏中访问和设置此文本,但根据此线程,这是不可能的。 因此,我试图绕过Outlook逻辑,使用PInvokes 我编写了一个小包装器,它返回给定进程的类名、文本和每个控件的句柄,例如Outlook 但我仍然没有找到一种可能性,将文本框X识别为句柄y 我还试图通过网络获取更多信息 [DllImport("user32.dll", SetLastError = true)] internal static ext

我有一个Outlook插件,其中包含一个带有文本框的功能区。 我想在代码隐藏中访问和设置此文本,但根据此线程,这是不可能的。 因此,我试图绕过Outlook逻辑,使用PInvokes

我编写了一个小包装器,它返回给定进程的类名、文本和每个控件的句柄,例如Outlook

但我仍然没有找到一种可能性,将文本框X识别为句柄y

我还试图通过网络获取更多信息

    [DllImport("user32.dll", SetLastError = true)]
    internal static extern Boolean GetClassInfoEx(IntPtr hInstance, String lpClassName, ref Model.WndClassEx lpWndClass);
但我也看不到用这些数据来识别我的控制的可能性

我在这里看到的最后一种可能性是在Ribbon上创建一个“GetText”-委托,设置一些特定的文本,并通过该文本搜索控件,但这对我来说似乎是超级黑客


有没有更好的方法来实现这一点?

这些控件没有打开窗口。也就是说,文本框控件没有窗口句柄,因为它不是窗口


所以,你试图做的事情,用这种方法是不可能的。虽然您可以枚举进程的窗口,但这不会生成表示文本框的窗口,因为文本框与其他功能区子控件一样,未打开窗口

我得到了句柄,如果我在文本框中手动输入一些文本并读出每个子控件的文本,我也得到了句柄。但是我不想用“文本查找”来做这件事。办公室彩带上的文本框不是窗口。我想我们在谈论别的东西。我用错词了吗?或者你能详细解释一下你的意思吗,不是关于窗户?我不需要窗口信息本身,只需要文本和可理解的标识符。您正在尝试检查窗口类名。只有windows才有窗口类。我告诉你,你问题中的代码,以及你的整个方法都无法工作,因为你处理的是非窗口控件。我相信有一种方法可以与你的控件进行交互,但由于你忽略了这么多细节,所以不清楚会是什么。好的,谢谢,似乎我对材料的理解有误。我需要进一步研究这个话题。