다른 프로그램에서 Richedit 컨트롤의 텍스트를 가져 오려고합니다.WinAPI EM_STREAMOUT crash
그래서 SendMessage에 대해 EM_STREAMOUT이 발견되었습니다.
이 내 코드는 지금까지 (또 다른 유래 항목에서)입니다 : 발생
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 반환입니다 - 그래서 분명히 바이트를 읽고되지 않았다 - 내가 '어느 프로그램 정보를 얻으려고하면 최대 100 % CPU 사용량이됩니다.
EM_STREAMOUT 원 프로세스 경계를 넘어서 일하지 않습니다. 이 작업을 수행하려면 코드를 다른 프로세스에 삽입해야합니다. –
그러나 WM_GETTEXT로 일반 편집 컨트롤에서 텍스트를 읽는 것이 좋으며 MSDN에서 프로세스 경계를 넘어서 작동하지 않는다는 것을 찾지 못했습니다. – user3342002
SO 주석에서 발견했습니다. 맞습니다. –