代码如下 
这段代码发键盘给 记事本都正常,无论换成 keybd_event还是SendInput,结果都一样,
问题是:发送按键消息过去的时候,目标程序能接收,但问题是,消息好像进入死循环一样,比如我的目的是按下1 就替换成按下A的消息发过去,但目标程序会不断的相应A的按键 好像我按下就没松开过一样.HWND m_hide=NULL;
m_hide=::FindWindow("TForm_show" ,"XXX");
HWND hChild=::FindWindowEx(m_hide,NULL,"TEdit","XXXX");
if( m_hide==NULL||hChild==NULL)
{
   AfxMessageBox("can't find the window");
}
::PostMessage(hChild,WM_KEYDOWN,'E',MapVirtualKey('E',0));
::PostMessage(hChild,WM_KEYUP,'E',MapVirtualKey('E',0));写在一个普通的对话框程序的按钮相应上
无论写在hook还是非hook的程序 结果都一样
http://community.csdn.net/Expert/topic/4752/4752635.xml?temp=.7796747

解决方案 »

  1.   


    void CprocesskeyDlg::OnBnClickedButton1()
    {   Sleep(5000);
       HWND m_hide=NULL;
        m_hide=::FindWindow("TForm_show" ,"XXX");
    HWND hChild=::FindWindowEx(m_hide,NULL,"TEdit","XXXX");    if( m_hide==NULL||hChild==NULL)
       {
       AfxMessageBox("can't find the window");
       }
     //  ::FindWindowEx(
       while(1)
       {
        Sleep(2000);
           ::PostMessage(hChild,WM_KEYDOWN,'E',MapVirtualKey('E',0));
      Sleep(1000);
             ::PostMessage(hChild,WM_KEYUP,'E',MapVirtualKey('E',0));
       }
    }
    上下代码