想用SendMessage函数写一个后台模拟按键(指运行时绑定的窗口可以最小化),  按下F10启动,绑定某个窗口,然后一直按空格键,每次按键间隔时间 可以在窗口自己调整,直到按下F12停止。按键部分很简单,可是自己不知道怎么用F10启动和F12停止循环退出。请教各位下。先谢谢

解决方案 »

  1.   

    你这个程序(不是绑定的窗口)有没有最小化?
    如果没有最小化,检测到按键F10就开始循环,循环中不断判断一个标志变量,如果标志为真就退出循环。循环中还要不断响应系统消息,以便有按键消息F12时可以执行。
    检测到按键F12改变标志变量的值为真。如果你本身的程序也要最小化,可能需要Hook来检测按键F10和F12。
      

  2.   

    http://blog.csdn.net/love3s/article/details/7851887
      

  3.   

    http://www.autohotkey.com
      

  4.   

    如果你用的是循环,就需要在循环内放一个sleep语句,让系统有反应时间。
      

  5.   

    在 死循环 处 加void DoEvents()
    {
    MSG msg;
    // Process existing messages in the application's message queue.
    // When the queue is empty, do clean up and return.
    while (::PeekMessage(&msg,NULL,0,0,PM_NOREMOVE))
    {// has msg
    if (!AfxGetThread()->PumpMessage()) break;
    }
    }
      

  6.   

    注册系统热键RegisterHotKey
      

  7.   

    用注册系统热键的方式最合理。注册F10为启动键,F12为停止键。
    一定要注意,发送按键的POSTMESSAGE之类的一定要放在工作线程中,否则会占住主线程,是什么都干不来了。