我在使用 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 读取缓冲区。加上清理。
关于c - EM_GETLINE 错误 C++ 从文本框获取最后一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3634298/