EM_GETLINE错误C ++从文本框中获取最后一行

我对EM_GETLINE有一个小问题。 我有一个文本框我想从中提取文本。 该框始终在不断更新(这是一个不断更新的日志文件,最后一条消息在底部)。 我想要的只是最后一行。

我的代码:

HWND hwnd = (HWND)0x00020A72; TCHAR param[1000]; char display[1000]; LONG lResult; lResult = SendMessage( hwnd, WM_GETTEXT, 500, (LPARAM)param); //lResult = SendMessage( hwnd, EM_STREAMOUT, SF_RTF, (LPARAM)param); //lResult = SendMessage( hwnd, EM_GETLINE, 1, (LPARAM)param); wcstombs(display, param, 1000); printf( " %s\n", display ); 

正如你所看到的,我已经尝试过WM_GETTEXT(有效)。 当使用GETLINE时,它编译好(VS2010express)但返回垃圾。

非常愿意帮忙。 谢谢收听。

这个窗口属于另一个进程,对吗? 我可以看到你对窗口把手进行了硬编码。 不确定消息是否跨进程边界自动封送,只有系统消息是(WM_Xxx <0x400)。

自己编组需要OpenProcess,VirtualAllocEx来分配缓冲区,WriteProcessMemory来初始化它,SendMessage,ReadProcessMemory来读取缓冲区。 加上清理。

您应该要求最后一行不是第一行并为终止添加NULL,请尝试以下操作:

 int last_line = SendMessage(hwnd, EM_GETLINECOUNT,0 ,0) - 1; int size = SendMessage(hwnd, EM_GETLINE, (WPARAM)last_line, (LPARAM)param); param[size] = 0;//EM_GETLINE does not add the NULL 

“指向接收行副本的缓冲区的长指针。缓冲区的第一个单词指定可以复制到缓冲区的最大字符数” http://msdn.microsoft.com/en-us/library/ aa921607.aspx

 *(WORD*) param = 1000