版权声明:转载请注明出处 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();
}
}