如何获取窗口文本框内的内容

版权声明:转载请注明出处 https://blog.csdn.net/weixin_42183571/article/details/82462256

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

猜你喜欢

转载自blog.csdn.net/weixin_42183571/article/details/82462256
今日推荐