首页 > 其他 > 详细

虚拟内存获取其他进程数据的问题

时间:2014-03-11 23:19:17      阅读:563      评论:0      收藏:0      [点我收藏+]

想在自己进程中获取其他进程里的树形控件(SysTreeView32)的内容。比如使用TVM_GETITEM消息获取某一节点数据。

思路很简单,由于是将消息发给另一个进程来处理,所以传递的指针的值应该是相对于目标进程地址空间中的,所以需要把在目标进程中申请空间。

VirtualAllocEx(m_hProcess, NULL, sizeof(T), MEM_COMMIT, PAGE_READWRITE);

然后将返回的地址作为消息的附加参数发送给目标进程,待消息返回后,我们再读取出消息处理的结果。

当我在使用TVM_GETITEM消息时却发现SendMessage返回值是0,应该是目标进程处理消息失败了,最大的可能就是我们申请的内存有问题。

google了一些,还真找到了帖子,上面说windows公用控件(common controls)消息处理是区分UNICODE和ASCII编码的,而且还要考虑目标进程是否是64位进程,32位和64位某些数据类型长度是不通的。

将自己写的进程改为64位,终于返回1了。

http://stackoverflow.com/questions/2244037/why-does-the-tvm-getitem-message-fail-on-comctl32-ocx-or-mscomctl-ocx-tree-views

虚拟内存获取其他进程数据的问题,布布扣,bubuko.com

虚拟内存获取其他进程数据的问题

原文:http://www.cnblogs.com/aishangxue/p/3594990.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!