PInvoke:识别文本框控件的任何可能性

时间:2015-11-02 20:19:10

标签: c# outlook pinvoke

我有一个Outlook-Addin,其中包含一个带文本框的功能区。 我想在代码中访问并设置此文本,但根据此线程Access Ribbon Elements Programatically in XML Ribbon,这是不可能的。 所以我试图绕过Outlook-Logic并使用PInvokes。

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

但是我仍然没有找到一种可能性,有点将Textbox X识别为Handle y。

我还尝试通过

获取更多信息
    [DllImport("user32.dll", SetLastError = true)]
    internal static extern Boolean GetClassInfoEx(IntPtr hInstance, String lpClassName, ref Model.WndClassEx lpWndClass);

但我也看不出用这个数据识别我的控件的可能性。

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

有没有更好的方法让这项工作?

1 个答案:

答案 0 :(得分:1)

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

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