VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 270|回复: 7

[求助] 有关不同进程的窗口之间发消息的问题

[复制链接]
23_avatar_middle
在线会员 发表于 2019-10-3 18:56:02 | 显示全部楼层 |阅读模式

//给下拉框插入字符串:
HWND hDlgWnd = ::FindWindow(_T("#32770"), _T("MsgTest"));
if (hDlgWnd){
        ::ShowWindow(hDlgWnd, SW_NORMAL);
        ::SetForegroundWindow(hDlgWnd);
        HWND hComboBox = ::GetDlgItem(hDlgWnd, 0x3EA);
        ::SendMessage(hComboBox, CB_INSERTSTRING, -1, (LPARAM)_T("CcTry.CoM"));
        ::SendMessage(hComboBox, CB_SETCURSEL, 5, 0);
}

学习教程中遇到的问题,为什么窗口①给窗口②的控件发消息可以像上面一样传递一个指针?
这个"CcTry.CoM"不是存在于①窗口的内存之中吗? 谢谢.




上一篇:创建通讯录管理系统过程中产生的问题
下一篇:打开进程api函数如何用管理员模式打开
51_avatar_middle
online_admins 发表于 2019-10-6 13:17:25 | 显示全部楼层

所有窗口都是桌面的子窗口,窗口句柄可以跨进程发消息的!
58_avatar_middle
online_vip 发表于 2019-10-5 13:05:29 | 显示全部楼层
能不能描述的在详细一点呀。
23_avatar_middle
ico_lz  楼主| 发表于 2019-10-5 16:29:44 | 显示全部楼层
敏敏 发表于 2019-10-5 13:05
能不能描述的在详细一点呀。

我就是觉得,既然不同进程的内存是互不干涉的
那么SendMessage ,把指向A进程的内存中的数据的指针作为参数传递给B进程的窗口,B进程得到的应该是无效的指针才对呀..
我自己做实验,用自定义消息传指针没有用,但是用CB_INSERTSTRING这种消息却可以传字符串,搞不懂.
58_avatar_middle
online_vip 发表于 2019-10-5 20:18:56 | 显示全部楼层
滑翔伞萌哒哒! 发表于 2019-10-5 16:29
我就是觉得,既然不同进程的内存是互不干涉的
那么SendMessage ,把指向A进程的内存中的数据的指针作为参 ...

从用户层来讲,你刚说的这条定义,是在API层,在驱动层就有办法做到,而发消息这函数是微软做的。内部可能调用某底层驱动,从汇编层看保护模式还有各种门,这个我没学好,先学好基础吧。
23_avatar_middle
ico_lz  楼主| 发表于 2019-10-6 00:57:38 | 显示全部楼层
敏敏 发表于 2019-10-5 20:18
从用户层来讲,你刚说的这条定义,是在API层,在驱动层就有办法做到,而发消息这函数是微软做的。内部可 ...

好吧.............,,
95_avatar_middle
在线会员 发表于 2019-10-8 19:56:04 | 显示全部楼层
能不能描述的在详细一点呀。
50_avatar_middle
在线会员 发表于 2019-10-9 15:03:31 | 显示全部楼层
跨进程发送消息,消息是能够投递到不同进程的,这个可以由windows系统完成,但跨进程的消息内容(这里的字符串地址)并不是共享的,但并不是没有办法。
想想windows的几个调试函数,调试器是怎么工作的,就是调试进程在访问被调试进程的内存,你可以设置断点,观察相关变量(跨进程内存)的变化,可以动态修改变量的值(跨进程的内存更新)
有几个函数查一查看看,你就知道了:createremotethread/virutalallocate之类的(好几个)
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

关闭

站长提醒上一条 /2 下一条

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号tongdun|网站地图wx_jqr

GMT+8, 2019-10-19 18:56

Powered by Discuz! X3.4

© 2009-2019 cctry.com

快速回复 返回顶部 返回列表