2015-11-02 22 views
-1

我有一個Outlook插件,其中包含帶有文本框的功能區。 我想訪問並在後面的代碼中設置此文本,但根據此線程Access Ribbon Elements Programatically in XML Ribbon這是不可能的。 所以我試圖繞過Outlook-Logic並使用PInvokes。PInvoke:識別文本框控件的任何可能性

我寫了一個小包裝器,它返回給定過程的每個控件的類名稱,文本和句柄,例如Outlook。

但我仍然沒有找到可能性,以確認TextBox X爲Handle y。

我也試圖通過

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

,以獲得更多的信息,但我也看不出的可能性,以確定我的這個數據控制。

我在這裏看到的最後一種可能性是在功能區上創建一個'GetText'委託,設置一些特定的文本並通過這個文本搜索控件,但是這對我來說似乎非常黑客。

有沒有更好的方法來完成這項工作?

回答

1

這些控件沒有窗口。也就是說,文本框控件沒有窗口句柄,因爲它不是一個窗口。

所以你試圖做什麼,這種方法是不可能的。雖然您可以枚舉進程的窗口,但是這不會產生代表文本框的窗口,因爲與其他功能區子控件一樣,文本框沒有窗口。

+0

嗯,我得到句柄,如果我手動在文本框中輸入一些文本並讀出每個子控件的文本,我也會得到句柄。但是,如果沒有一些「通過文本查找」--shennanigans,我想這樣做。 –

+0

辦公室絲帶上的文本框沒有窗口 –

+0

我想我們正在談論其他事情。我用了一個錯誤的詞,或者你可以詳細說明你的意思,關於不是Windows?我不需要窗口信息本身,只需要文本和可理解的標識符。 –