1. 程式人生 > >如何獲取視窗文字框內的內容

如何獲取視窗文字框內的內容

通過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();
        }
    }