使用SendMessage()C++获取文本

Adr*_*ian 2 c++ winapi

我试图从特定窗口中的文本框中获取文本.为此,我使用SendMessage Api函数,我不知道这是否是核心方式:

SendMessage(hwnd, WM_GETTEXT, 0, 0);
Run Code Online (Sandbox Code Playgroud)

但我不知道如何打印文本.对于msdn站点中的参数3和4,它说:附加的消息特定信息.所以我不知道我是否需要在0旁边传递其他东西.我也尝试了这个:

SendMessage(hwnd, WM_GETTEXT, sizeof(text), LPARAM(text));
Run Code Online (Sandbox Code Playgroud)

但它打印文本框的名称,我需要检索框内的文本?
我怎样才能做到这一点?SendMessage()是否使用正确的API函数?

谢谢.

编辑:

我省略说,我从一个窗口枚举子窗口,对我来说它看起来像一个文本框,你必须在其中键入一个名称.我正在检索即时消息窗口的用户名,所以我无法将其与字符串进行比较,这是一个文本框吗?

Mac*_*Mac 5

你应该使用GetWindowText.更多信息在这里.

  • @vBx:标准的Edit控件类名是"Edit".Spy ++以十六进制显示ID,因此000000D3为整数值211的十六进制.如果要在代码中硬编码十六进制数,则必须使用`0x`前缀,即:`0x000000D3`. (3认同)

Rem*_*eau 5

再次阅读MSDN文档.它没有为这些参数说"附加消息特定信息":

wParam要复制的最大字符数,包括终止空字符.

由于从ANSI到Unicode的转换,ANSI应用程序可能会使缓冲区中的字符串大小减小(至少为wParam值的一半).

lParam指向要接收文本的缓冲区的指针.