项目中需要调用一个其他公司写的程序(无源码,无接口,应该是MFC的)。这个程序运行后最小化,然后只要系统中有F1,F2,F3...这样的按键事件就可以呼叫出相应的功能(不需要该程序获得焦点,应该是全局hook实现的)。现在需要我在自己的程序中控制哪个功能被弹出,也就是模拟键盘输入。现在已经用了
SendKeys.SendWait("{F1}");SendKeys.Send("{F1}");
            
keybd_event((byte)Keys.F1, 0, 0, 0); //按下F1
keybd_event((byte)Keys.F1, 0, 2, 0); //释放F1
这些方法,都没有响应,但是直接在键盘上按F1是有响应的,请问要用什么方法可以发送F1按键消息?

解决方案 »

  1.   

    刚好看了一篇模拟键盘消息的文章:
    http://blog.csdn.net/fsc2988877/article/details/1483166
      

  2.   

    SendKeys.SendWait("{F1}");SendKeys.Send("{F1}");。。
    。。
    。。这些都是对你最小化应用程序上按下F1, 所以对其他程序没影响。如果要用就用全局的钩子
      

  3.   

    经过验证:
    keybd_event((byte)Keys.F1, 0, 0, 0); //按下F1
    keybd_event((byte)Keys.F1, 0, 2, 0); //释放F1
    是可以用的,两行语句之间一定要加延时。
    谢谢各位,封贴