如何獲取視窗文字框內的內容
阿新 • • 發佈:2018-11-03
通過SendMessage函式獲取文字框內容
一 效果展示
先看效果如圖。右面窗體點選“獲取”即可獲取到左面窗體文字框內容。
二 實現原理
1.通過FindWindow函式獲取到“測試視窗”的控制代碼
2.獲取窗體"Test"lable控制元件控制代碼
3.通過視窗控制代碼獲取視窗所有控制元件控制代碼
4.遍歷獲得文字框控制代碼。(這裡可以檢視我的部落格“如何獲得文字框控制代碼”來了解實現方法點選這裡)
5.通過sendmessage函式獲取文字框內容(需要知道文字框控制代碼,需要設定WM_GETTEXT=0x0D)
程式碼如下:
public partial class Form1 : Form { const int buffer_size = 1024; StringBuilder buffer = new StringBuilder(buffer_size); public Form1() { InitializeComponent(); } private void btn_Get_Click(object sender, EventArgs e) { //獲取視窗控制代碼 IntPtr intptr = ExternApi.FindWindow(null, "測試視窗"); //獲取窗體"Test"lable控制元件控制代碼 IntPtr id = ExternApi.FindWindowEx(intptr, "Test", true); //獲取視窗所有控制元件控制代碼 List<IntPtr> list = ExternApi.GetIntPtr(intptr); int index = 0; for (int i = 0; i < list.Count; i++) { if (list[i] == id) { index = i + 1; break; } } StringBuilder title = new StringBuilder(200); //獲取文字框內容 ExternApi.SendMessage((int)list[index], ExternApi.WM_GETTEXT, buffer_size, buffer); txt_Get.Text = buffer.ToString(); } }