CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VB >  API

如何发送一条消息给一个无HWND的区域

楼主jp2005999(学习班)2005-03-04 00:50:19 在 VB / API 提问

我想把WM_LBUTTONDOWN消息发送给一个无HWND的区域  
  就好比发送到一个程序的某一个图片上。  
  但这个地方无句柄  
  如何做到这一点? 问题点数:0、回复次数:20Top

1 楼hsgrass37301(零点)回复于 2005-03-04 01:26:28 得分 0

任何窗体都有句柄的,你应该是找到父窗体,然后再列举子窗体。再发Top

2 楼jp2005999(学习班)回复于 2005-03-05 01:17:53 得分 0

..........  
  一个程序上的LABEL有句柄吗?  
  假如我想给这个LABEL发消息。。  
  那不是没有办法的事情了?Top

3 楼sworddx(.:RNPA:. hillin)回复于 2005-03-05 01:54:57 得分 0

实际上,如果只是给一个独立的vb.label发送消息,你永远不会得到想要的结果,因为vb里面的label根本不能算是一般意义上的控件。Top

4 楼sworddx(.:RNPA:. hillin)回复于 2005-03-05 01:56:32 得分 0

如果接受消息的对象是来自delphi等的label,它们实际上是具有句柄属性的,和vb的label有本质的区别。Top

5 楼myjian(嗷嗷叫的老马--很不顺.....最近.....很不顺.........)回复于 2005-03-05 17:40:40 得分 0

VB的标签控件是轻量控件,不具有HWND属性.Top

6 楼mjcom(不明飞行物)回复于 2005-03-05 19:09:55 得分 0

对,任何窗口都有句柄,你可以用“FindWindow(类名,窗口标题)”查找你指定的窗口的句柄,如果窗口没有标题,哪类是一定有的,你可以用工具查看窗口的类,VS6里有个工具“SPY++”这个工具中有FindWindow选项,你可以用它来找到窗口的类。如果还要找子窗口,你可以用“FindWindowEx(主窗口句柄,0,子窗口类,子窗口标题)”来查找子窗口的句柄,要是你十再不知道怎么找窗口的句柄,你用这个API:GetForegroundWindow(),这个API没有任何参数,它的作用是得到当前窗口的句柄!Top

7 楼sworddx(.:RNPA:. hillin)回复于 2005-03-05 21:53:47 得分 0

楼上的同志,对于VB中的label和image控件,它们是没有句柄的,这个问题我早先就讨论过。它们虽然被当作控件对待,但是不像一般的控件那样在windows中是被当作window处理的。Top

8 楼HotMousE(HotMousE)回复于 2005-03-05 22:25:49 得分 0

楼上的同志.我们从最简单的东西来看。  
   
          Dim   picTest   As   New   PictureBox  
          Msgbox   picTest.hwnd  
   
  picTest.hWnd   这个是什么,不是句柄?Top

9 楼dongge2000(目前叫西西了)回复于 2005-03-05 22:48:38 得分 0

楼上的同志,PICTURE控件是有HWND的,LABEL是没有的,如真的想做,只有APIHOOK,拦TEXTOUT这个API。Top

10 楼sworddx(.:RNPA:. hillin)回复于 2005-03-05 23:03:05 得分 0

楼上的楼上的同志,我说的是label和image控件,与picturebox控件没有任何关系。Top

11 楼Mister(菜青虫)回复于 2005-03-06 12:38:47 得分 0

支持     sworddx(.:RNPA:.   Hillinsilence;剑宇潇湘·秋叶原   Reloaded)  
  鄙视     HotMousE(HotMousE)Top

12 楼myjian(嗷嗷叫的老马--很不顺.....最近.....很不顺.........)回复于 2005-04-03 08:01:08 得分 0

我再来跟一帖.  
   
  想发消息到一个图片上,而这个地方得不到句柄(比如是用Image等轻量控件),我觉得还是有可能的.  
   
  我的思路是这样的:  
   
  程序间的通讯是靠"消息",而鼠标单击时的消息是使用PostMessage发送的,参数是句柄,动作,坐标.  
   
  至于这些消息在别人程序里怎么处理,那个你就不用管了.反正只要模拟出鼠标单击就行了.  
   
  那么,你就可以直接向图片所在的窗体(最顶级的)发送一个动作+坐标的消息.因为这个消息是与鼠标单击时产生的消息一样,所以我想效果也应该是一样的.  
   
  后来我做了一下实验,证明了我的想法是正确的.我可以向非本进程的程序发送一个鼠标按下+放开的消息,并让其有所动作.  
   
  经过我的实验,VB里经典的两个轻量控件----Label和Image都成功地收到了鼠标按下的消息,并产生了鼠标按下事件.其他轻量控件也不用试了吧?  
   
  但有一个问题,就是无法触发单击事件.根据SPY++的结果,消息是完全正确的,与使用鼠标去点时产生的消息完全一样,但打死不出单击消息.不知道是为什么.  
   
  这个问题,还请知道的朋友解释一下!!谢谢Top

13 楼myjian(嗷嗷叫的老马--很不顺.....最近.....很不顺.........)回复于 2005-04-03 08:02:00 得分 0

这下楼主的问题得到解决了吧,哈哈.Top

14 楼DemonLoveLizzy(^_^)!!! 用户中文昵称 ? 是什么东东 ? :)回复于 2005-04-08 06:19:03 得分 0

楼上的同志,如果你不知道那个轻权控件的坐标,你怎么模拟鼠标动作+“坐标”?没有句柄,你如何知道它在哪里呢?Top

15 楼myjian(嗷嗷叫的老马--很不顺.....最近.....很不顺.........)回复于 2005-04-08 23:02:39 得分 0

从楼主的问题来看,目标主窗体句柄与目标区域的位置应该都是相对固定的,而不是随机的!!  
   
  而如果这两个条件都是随机的,我想应该是不可能实现这个功能了!Top

16 楼myjian(嗷嗷叫的老马--很不顺.....最近.....很不顺.........)回复于 2005-04-08 23:10:29 得分 0

而且,我想楼主应该是可以得到这两个参数!!  
   
  要不然写那么多也是白搭.Top

17 楼DemonLoveLizzy(^_^)!!! 用户中文昵称 ? 是什么东东 ? :)回复于 2005-04-09 05:27:57 得分 0

//从楼主的问题来看,目标主窗体句柄与目标区域的位置应该都是相对固定的,而不是随机的!!  
   
  如果是这样,那连讨论的必要都没有。Top

18 楼sworddx(.:RNPA:. hillin)回复于 2005-04-09 09:41:07 得分 0

同意楼上的看法。Top

19 楼songyaowu(不以分多而蹭之;不因分少而不答; www.vb99.com)回复于 2005-04-09 16:00:16 得分 0

 
  因为无论是发送消息还是捕获消息,都需要对象的hwnd,而对于无hwnd的控件来讲(如VB的image、label)这些轻量控件来讲是不行的。  
   
  也许通过引用类型库,将这些轻量控件通过接口映射到IOleInPlaceSiteWindowless上可以解决问题。  
  Top

20 楼myjian(嗷嗷叫的老马--很不顺.....最近.....很不顺.........)回复于 2005-04-11 22:36:37 得分 0

当我什么也没有说过吧.Top

相关问题

  • 如何在MFC窗体中获取消息发送者的hWnd?
  • 发送消息
  • 发送消息。
  • 发送消息
  • 怎么获得主窗口的CWnd*?怎么把CWnd*变成HWND?怎么给HWND发送WM_USER消息?SendMessage(hwnd,WM_USER,0,0);可是主窗口接收不到
  • 在一个窗口中有一块区域,在该区域中既不能发送WINDOWS消息,也不能接收Windows消息,请问有什么办法可以得到当前鼠标的位置啊?
  • 发送消息,接受消息??
  • 用VB发送消息
  • 发送消息问题
  • 消息发送问题

关键词

  • 控件
  • 消息
  • 鼠标
  • 区域
  • 坐标
  • vb
  • 句柄
  • 窗体
  • 楼上的同志
  • 单击

得分解答快速导航

  • 帖主:jp2005999

相关链接

  • Visual Basic类图书
  • Visual Basic类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo