[原創]C#應用WindowsApi實現查找(FindWindowEx)文本框(TextBox、TextEdit)。


/// <summary>
/// 獲取文本框控件
/// </summary>
/// <param name="hwnd">文本框所在父窗口</param>
/// <param name="text">文本框文本,null為搜索所有</param>
/// <param name="iLevel">父窗口上第幾個文本框</param>
/// <returns>文本框句柄</returns>
private IntPtr GetTextEdit(IntPtr hwnd,string text, int iLevel)
{
IntPtr iEditor = IntPtr.Zero;
IntPtr iCode = IntPtr.Zero;
if (hwnd != IntPtr.Zero)
{
for (int i = 0; i < iLevel; i++)
{
iCode = WindowsApi.FindWindowEx(hwnd, iCode, "WindowsForms10.Window.b.app.0.bf7771_r13_ad1", "");
if (iCode == IntPtr.Zero)
break;
}
if (iCode != IntPtr.Zero)
iEditor = WindowsApi.FindWindowEx(iCode, IntPtr.Zero, "WindowsForms10.EDIT.app.0.bf7771_r13_ad1", text);
}
return iEditor;
}

說明:

"WindowsForms10.EDIT.app.0.bf7771_r13_ad1" 文本框類型,可以通過Spy++工具查看,如下圖

 

文本框都有一個父類,如代碼中"WindowsForms10.EDIT.app.0.bf7771_r13_ad1",即為文本框的父類類型,要先找到第幾個文本框的父類,再從父類中查找當前文本框。

如果"WindowsForms10.EDIT.app.0.bf7771_r13_ad1"會發生變化,則傳入null即可,意思是按照所有類型遍歷,這時候“第幾個”要做相應的變更。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM