高分求解...跨进程操作CRichEditCtrl的问题.
CString rtfPrefix;
rtfPrefix = "chinese";
CString rtfString = rtfPrefix;
EDITSTREAM es = {(DWORD)&rtfString, 0, EditStreamCallBack};
DWORD dwProcessID;
HANDLE hProcess;
DWORD dwBytesRead, dwBytesWrite;
BOOL bSuccess,bWriteOK;
HWND hWindow = (HWND)0x60198;
GetWindowThreadProcessId(hWindow,&dwProcessID);
hProcess=OpenProcess(PROCESS_ALL_ACCESS,FALSE,dwProcessID);
if(!hProcess) //得不到指定进程的句柄
return;
//在指定进程内分配存储空间
LPVOID esRemote=VirtualAllocEx(hProcess,NULL,sizeof(EDITSTREAM),MEM_COMMIT,PAGE_READWRITE);
LPVOID stringRemote=VirtualAllocEx(hProcess,NULL,rtfPrefix.GetLength(),MEM_COMMIT,PAGE_READWRITE);
if((!esRemote) || (!stringRemote)) //不能在指定进程内分配存储空间
return;
bWriteOK = WriteProcessMemory(hProcess,esRemote,(LPVOID)&es,sizeof(EDITSTREAM),(LPDWORD)&dwBytesWrite);
if(!bWriteOK) //写内存错误
return;
bWriteOK = WriteProcessMemory(hProcess,stringRemote,(LPVOID)&rtfString,rtfString.GetLength(),(LPDWORD)&dwBytesWrite);
if(!bWriteOK) //写内存错误
return;
::SendMessage((HWND)0X90200,EM_STREAMIN,(WPARAM)SF_TEXT,(LPARAM)esRemote);
在一个进程中操作另一个进程中的RichEdit对象,向其中追加文本,但执行到最后一句时(发送消息),会导致目标程序崩溃,前面分配内存等等操作,全部成功..不成为什么.
谢谢大家帮忙..