我有一个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,但这对我来说似乎超级黑客。
有没有更好的方法让这项工作?
答案 0 :(得分:1)
这些控件没有窗口化。也就是说,文本框控件没有窗口句柄,因为它不是窗口。
所以你试图做的事情,这种方法是不可能的。虽然您可以枚举进程的窗口,但这不会产生表示文本框的窗口,因为文本框与其他功能区子控件一样,没有窗口化。