很难的问题,请高手进来!分数不是问题,如果能解决,要多少给多少!决不食言!

梅文海 2005-03-04 01:53:59

如何让系统中的多个窗口同时激活,也就是说,能够同时获得鼠标和键盘的消息
其实我想这很难办到,因为 GetForegroundWindow 和 GetActiveWindow 只能获得一个窗口句柄,但是如果

1.能从虚拟主机的方式也可以,例如利用 VirtualPC 就可以使得系统存在多个被激活的窗口,虽然 VirtualPC 本身不被激活,但是 VirtualPC 允许其内部存在一个被激活的窗口,如果有多个 VirtualPC 在运行,就可以实现多个窗口被激活了。

2.或者从进程的角度出发,例如将多个需要被激活的窗口强制设置为一个程序的工具窗口,这个该程序如果被激活,那么这些所有的工具窗口也就可以被激活了。

以上是两个思路,但是本人能力有限,没有能够实现,希望大家积极献策。
...全文
209 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
梅文海 2005-03-08
  • 打赏
  • 举报
回复
SeekTruth(鹤舞白沙):就有这样的需求,没有办法!不想信大家回去做个试验,你把 Excel 调出来,然后发送鼠标的点击消息点击它的菜单或工具栏,看看能不能点(在不被激活的状态)。

终于解决了,使用了一个钩子,强制让这个程序获得激活状态。
把帖子结了!
yafizyh 2005-03-05
  • 打赏
  • 举报
回复
不懂!
是否被激活与你要实现的功能有什么联系呀。实现这些功能就行了,为何特别在意是否激活。
若要实现 能够同时获得鼠标和键盘的消息 只要将消息转发就行了,进程间通信。
SeekTruth 2005-03-05
  • 打赏
  • 举报
回复
楼主觉得同时激活两个窗体的意义何在?
开始远离编程 2005-03-04
  • 打赏
  • 举报
回复
wangk 2005-03-04
  • 打赏
  • 举报
回复
好久没看见这么有深度的问题了,这几天没空Mark一下先。
fanqing 2005-03-04
  • 打赏
  • 举报
回复
学习
xenke 2005-03-04
  • 打赏
  • 举报
回复
我没试过,不过我想是可以的.发键盘,鼠标消息并不需要窗口是激活状态,只有注意坐标就行了,可以自己处理WM_NCACTIVATE,WM_ACTIVATE,WM_ACTIVATEAPP等类似的与窗口激活有关的消息,
BigFanOfCpp 2005-03-04
  • 打赏
  • 举报
回复
我觉得实质的问题是在消息循环上,因为WIN32有自己的唯一的消息循环,如果你要做,就要有自己的操作系统的子系统,也就是自己的消息循环就能办到。
梅文海 2005-03-04
  • 打赏
  • 举报
回复
顺便问一下诸位,如果你们要知道你的窗口是否出于被激活的状态,你们会怎么写代码,用几种方法?
梅文海 2005-03-04
  • 打赏
  • 举报
回复
vcleaner(我没做大哥已经很久了.......) :君不见 PhotoShop 的工具栏吗,我记得好像是一直被激活的状态,如果能出来这种效果,我估计我的问题可能差不多解决了
梅文海 2005-03-04
  • 打赏
  • 举报
回复
我试过了,用互斥对象(Mutex)来保证多个窗口不被同时处理消息,但是经过试验,发现问题非常严重,一点都不能工作,先在处理代码的地方加入互斥对象,然后发送相应的消息,最后释放互斥对象,我发现效果非常不好,这样还特别影响 Windows 的美观(多个窗口来回激活)。
wenddy112 2005-03-04
  • 打赏
  • 举报
回复
wenddy112(敬):我是要求窗口被激活,和发不发消息没有关系的。再者说,如果我发了消息,可是它以判断没有被激活,就抛弃这些消息了。
==================
当然是你向那个发就将它激活,然后再激活下一个法消息。
轮流的激活也是激活把,反正对于它来说都是激活的。
pinel 2005-03-04
  • 打赏
  • 举报
回复
同意一楼的,可以查询桌面上每个窗口,都发一个消息过去
老夏Max 2005-03-04
  • 打赏
  • 举报
回复
呵呵,学习!

2.或者从进程的角度出发,例如将多个需要被激活的窗口强制设置为一个程序的工具窗口,这个该程序如果被激活,那么这些所有的工具窗口也就可以被激活了。
============================================
OS的桌面?
梅文海 2005-03-04
  • 打赏
  • 举报
回复
wenddy112(敬):我是要求窗口被激活,和发不发消息没有关系的。再者说,如果我发了消息,可是它以判断没有被激活,就抛弃这些消息了。
wenddy112 2005-03-04
  • 打赏
  • 举报
回复
用系统钩子,有键盘和鼠标的输入给这些窗口都传消息过去。

15,471

社区成员

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

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