Adrian
Adrian

Reputation: 20058

Get text using SendMessage() C++

I am trying to get text from a textbox in a specific window. For this I'm using SendMessage Api function, I dont know if this is the corect way:

SendMessage(hwnd, WM_GETTEXT, 0, 0);

But I dont know how to print the text. For the argument 3 and 4 in msdn site it says: Additional message-specific information. So i dont know if I need to pass something else beside 0. I tried this also:

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

But it prints the name of the textbox, I need to retrieve the text inside the box?
How can I do this? Is SendMessage() the correct API function to use ?

Thank you.

edit:

I omit to say, I am enumerating the child windows from a window, and for me it looks like a textbox, where you have to type a name. I am retrieving the username of a Instant messaging window so I cant compare it to a string, is that a textbox ?

Upvotes: 2

Views: 10418

Answers (3)

RizonBarns
RizonBarns

Reputation: 621

This code works for local only:

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);

Upvotes: 2

Remy Lebeau
Remy Lebeau

Reputation: 595672

Read the MSDN documentation again. It does NOT say "Additional message-specific information" for those parameters:

wParam The maximum number of characters to be copied, including the terminating null character.

ANSI applications may have the string in the buffer reduced in size (to a minimum of half that of the wParam value) due to conversion from ANSI to Unicode.

lParam A pointer to the buffer that is to receive the text.

Upvotes: 5

Mac
Mac

Reputation: 14791

You should use GetWindowText. More information here.

Upvotes: 6

Related Questions