我的程序向别的进程发鼠标消息,就是wm_lbuttondown,发现有的行,有的不行。不行的话,要发mouse_event才行。但是这样就要求那个窗口是前端窗口,很不方便。为什么有时候鼠标消息不行,非要发mouse_event?  有办法让它不是前端窗口时也能起作用吗?

解决方案 »

  1.   

    用spy++捕获下目标窗口收到的消息,在窗口不是前段的情况下,看看目标窗口是否有收到消息
      

  2.   

    你是说发wm_lbuttondown消息?
      

  3.   

    现在    我如果用mouse_event是可以正常工作的    目标窗口就像是人手工按下了鼠标一样。但用sendmessage发wm_lbuttondown消息则不行
    不过   用mouse_event有个麻烦之处    就是必须先把目标窗口设为前端窗口   才行   否则也无法正常工作
      

  4.   

    试试用 PostMessage 派发到消息队列中
      

  5.   

    http://www.autohotkey.com
    或者
    CreateDesktop
      

  6.   

    我想问:   这种不响应wm_lbuttondown消息,却却能响应mouse_event的程序是怎样编写的?两者有什么不同?
      

  7.   

    你是说发wm_lbuttondown消息?
    你不是说有的时候消息发过去了但是实际感觉窗体是没有响应消息吗,所以就先确认下看看消息有没有发送过去
      

  8.   

    发了WM_LBUTTONDOWN,别忘了发WM_LBUTTONUP
      

  9.   

    你是说发wm_lbuttondown消息?
    你不是说有的时候消息发过去了但是实际感觉窗体是没有响应消息吗,所以就先确认下看看消息有没有发送过去
    刚才用spy看了一下   消息已经发到目标窗口   但目标程序不处理   没反应
      

  10.   

    应该是第二张应该是第二种情况    因为spy跟踪到消息一发到目标窗口
    这就难了  他有特殊处理方法    我怎样让他不是前端窗口时也能处理呢   mouse_event倒是可以    但要求是前端窗口
      

  11.   

    我就想问一下   不处理wm_lbuttondown消息   但响应mouse_event的程序怎么写?
      

  12.   

    你是说发wm_lbuttondown消息?
    你不是说有的时候消息发过去了但是实际感觉窗体是没有响应消息吗,所以就先确认下看看消息有没有发送过去
    刚才用spy看了一下   消息已经发到目标窗口   但目标程序不处理   没反应
    那窗口收到直接的物理按建的消息和自己发送过去的一样吗?
      

  13.   

    你是说发wm_lbuttondown消息?
    你不是说有的时候消息发过去了但是实际感觉窗体是没有响应消息吗,所以就先确认下看看消息有没有发送过去
    刚才用spy看了一下   消息已经发到目标窗口   但目标程序不处理   没反应
    那窗口收到直接的物理按建的消息和自己发送过去的一样吗?
    一样的
      

  14.   

    刚才试用了一个虚拟桌面软件,发现如果程序运行在虚拟桌面里,如果当前显示的不是虚拟桌面,那么mouse_event是不能把消息消息发到相应的窗口的,只有把这个虚拟桌面显示出来,鼠标消息才能发到那个窗口。
      

  15.   

    头疼啊!我的程序,想把鼠标消息发给一个应用程序,结果,第一:发WM_LBUTTONDOWN这样的消息不行,得发mouse_event,而mouse_event的话,又必须目标窗口在最前端。连放到虚拟桌面里都不行。这是不是意味着,我的程序,无法让它在后台工作了?只能把它的目标窗口,放到最前端?还有什么别的办法吗?我知道虚拟机是一种方法,但是一般的用户都是不会虚拟机的。除了虚拟机以外,还有别的办法吗?
      

  16.   

    搜“后台调用外部程序的完美实现(使用CreateDesktop建立隐藏桌面)”
      

  17.   

    HOOK后在处理
      

  18.   

    这种屏蔽了的,只能hook或者注入后台处理
      

  19.   

    wm_lbuttondown  需要wparam 和lparam参数配合使用,它内部也有可能做了消息过滤