有一个VB程序,程序启动后是一个全屏的画面,点击这个画面之后才进入程序。我现在想启动这个程序之后给这个程序发鼠标点击的信息,好让这个画面一闪而过或者干脆不显示画面。    SendMessage(H1,WM_LBUTTONDOWN,MK_LBUTTON,MAKELPARAM(200,200));
    SendMessage(H1,WM_LBUTTONUP,0,MAKELPARAM(200,200));
   
   //H1是这个VB程序的启动画面窗口的句柄。前面用ShellexecuteEx启动这个VB程序的时候还获得了一个返回的句柄H,不知道是不是主程序的句柄?    用spy++也能看到这个窗口收到我的消息了,但是就是不进入程序。但是我真的用鼠标点击就可以。我又用Delphi做了一个测试程序,给测试程序发同样的消息,测试程序收到消息后都解释为单击事件。请各位大虾看看是什么问题?是不是VB和Delphi处理这些消息有什么不同啊?应该怎么给VB程序模拟单击?

解决方案 »

  1.   

    VB 和 DELPHI 都是WIN32的消息处理模式,原理没什么大不同。
    用这2个方法试一下,但愿对你有用:
    一、
    PostMessage(findwindow(nil,'你程序的标题'), WM_CLOSE, 0, 0);
    二、
    keybd_event(VK_RETURN, 0, 0 ,0);
    keybd_event(VK_RETURN, 0, KEYEVENTF_KEYUP ,0);
      

  2.   

    消息是windows的,所以采用PostMessage或者SendMessage将消息发送给问vb他根据你发来的消息字符标示,再去做相应的工作,不管什么工作。
      

  3.   

    鼠标模拟函数和键盘模拟函数也用了,不过都没什么作用。因为这个窗口还有一个计时器,我现在直接给那个计时器发送WM_TIMER消息了,这样就没有问题。呵呵,谢谢各位了。