急~给64位程序的控件发消息取字符串,结果为空

Lings 2010-07-27 04:53:31
我的程序是32位的,运行在64位的OS上,系统的资源管理器的进程自然也是64位的,现在知道其中一个ListView的句柄,我要在我的32位的程序中通过SendMessage给这个ListView发LVM_GETITEMTEXT消息以获取某个Item的字符串值。

我用VirtualAllocEx在系统64为的资源管理器进程中分配了内存,但是SendMessage后,字符串缓冲区中竟然没有字符,在网上查了资料,都说是因为64位进程处理这个消息的时候,把32位程序传进来的地址(当然是32位的)当成了64位来处理,所以没有把字符串放在这个地址中。

请问大家,如何处理这种情况???感激
...全文
107 1 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
cnzdgs 2010-07-27
  • 打赏
  • 举报
回复
没这么搞过,给你点提示,自己试试看吧:
参照LVITEM的定义,自己定义一个结构,将LVITEM中的int改为LONGLONG,UINT及指针类型都改为ULONGLONG。访问结构时用强制类型转换。
另外自己再写个64位程序测试一下,看消息是否能正常接收,再注意一下地址的高32位。

15,473

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧