跨进程传递数据的做法

来源:互联网 发布:linux 中文输入法安装 编辑:程序博客网 时间:2024/05/29 05:12

作者:朱金灿

来源: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即可。不过我没有试过这种方法


参考文献:

 

1.vc++ 向另一程序窗口的编辑框写入内容

1 0