postmessage可以用来模拟键盘 鼠标动作
于是在一个函数中写了一串的模拟 比如说:
PostMessage(ShopAssist::gameHwnd,WM_KEYDOWN,48,0);    //模拟“0”
PostMessage(ShopAssist::gameHwnd,WM_LBUTTONDBLCLK,0,(323<<16)+105);    //鼠标双击105,323
PostMessage(ShopAssist::gameHwnd,WM_KEYDOWN,49,0);    //模拟“1”
无论怎么设置 貌似都是在函数全部代码执行后才执行postmessage
而且postmessage先执行鼠标动作,后执行键盘动作 

比如说原来想在edt1中输入“0”,在edt2中输入“1”
而现在却变成edt1中无输入,edt2中输入“01”,用sleep也无效

解决方案 »

  1.   

    PostMessage的线程与创建gameHwnd的线程是同一个吗?如果是的话PostMessage只是把消息放入消息队列就返回了,要等你这个函数出来之后线程才能继续处理消息循环,所以红字部分的问题是正常的.第2个问题的话我也不清楚,可能是由于优先级的原因,鼠标消息要优先于键盘消息进行处理.
      

  2.   

    模拟一个键盘按下是需要依次发三个消息的PostMessage(ShopAssist::gameHwnd,WM_KEYDOWN,48,0); //模拟“0”
    PostMessage(ShopAssist::gameHwnd,WM_CHAR,48,0); 
    PostMessage(ShopAssist::gameHwnd,WM_KEYUP,48,0); 改下 试试。