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

时间:2011-04-26 22:30:02

标签: c++ winapi

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

SendMessage(hwnd, WM_GETTEXT, 0, 0);

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

SendMessage(hwnd, WM_GETTEXT, sizeof(text), LPARAM(text));

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

谢谢。

编辑:

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

3 个答案:

答案 0 :(得分:5)

您应该使用GetWindowText。更多信息here

答案 1 :(得分:5)

再次阅读MSDN documentation。它没有为这些参数说“附加消息特定信息”:

  

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

     

ANSI应用程序可能包含字符串   在缓冲区缩小尺寸(到一个   至少是wParam的一半   由于从ANSI转换为   Unicode格式。

     

lParam指向缓冲区的指针   是接收文本。

答案 2 :(得分:1)

此代码仅适用于本地代码:

char *szText;
szText = (char *)GlobalAlloc(GPTR, 255);
SendMessage(hEditControl, WM_GETTEXT, 255, (LPARAM)szText);
MessageBox(hWnd, szText, "It's your message", MB_OK | MB_TOPMOST);
GlobalFree((HGLOBAL)szText);