Tag: sendmessage

WinAPI EM_STREAMOUT崩溃

我正试图从另一个程序中获取Richedit Control的文本。 所以我找到了SendMessage的EM_STREAMOUT。 到目前为止这是我的代码(也来自另一个Stackoverflow主题): DWORD CALLBACK EditStreamOutCallback(DWORD_PTR dwCookie, LPBYTE pbBuff, LONG cb, LONG *pcb) { std::stringstream *rtf = (std::stringstream*) dwCookie; rtf->write((char*)pbBuff, cb); *pcb = cb; return 0; } int main() { std::stringstream rtf; EDITSTREAM es = {0}; es.dwCookie = (DWORD_PTR) &rtf; es.pfnCallback = &EditStreamOutCallback; SendMessage((HWND) 0x00000000000A06E8, EM_STREAMOUT, SF_RTF, (LPARAM)&es); } 唯一发生的事情是SendMessage返回0 – 所以显然没有读取字节 – 我试图从中获取信息的程序的CPU使用率高达100%。

使用具有多个根窗口的FindWindow

所以我正在构建一个使用win32的SendMessage作为IPC的应用程序。 我正在使用FindWindow来获取基于className和windowName的hWnd。 这一切都很好,花花公子,直到我想要与根(如在桌面的子节点)的窗口交谈,窗口与其他根Windows具有相同的名称/类名。 有没有FindWindow的替代品我可以用来选择我想要的hWnd?