作者:朱金灿
来源:http://blog.csdn.net/clever101
很多时候需要将数据从一个进程传递到另外一个进程,比如向另一程序窗口的编辑框写入内容,具体如下图:
最先想到使用剪贴板,但是剪贴板需要目标进程的源码才能办到,否则无法复制剪贴板的数据。在没有目标进程的情况下有效办法是使用SendMessage函数,因为SendMessage函数是跨进程的。大致代码如下:
HWND hTargetWnd = NULL; // 目标窗口句柄
// 获取目标窗口句柄,此步忽略
CString str = "你要传递的字符串";
::SendMessage(hTargetWnd, WM_SETTEXT, NULL, (LPARAM)str.GetBuffer());
str.ReleaseBuffer();
还有一种注入法,就是在远程进程开辟一块内存VirtualAllocEx,写入新标题WriteProcessMemory,发消息WM_SETTEXT即可。不过我没有试过这种方法
参考文献: