[DllImport("user32.dll")]
static extern void keybd_event(
byte bVk, 
byte bScan, 
uint dwFlags, 
uint dwExtraInfo
);
const uint KEYEVENTF_EXTENDEDKEY = 0x1;
const uint KEYEVENTF_KEYUP = 0x2;
你调用的时候
直接 
keybd_event((byte)17,0x45, KEYEVENTF_EXTENDEDKEY | 0, 0);其中的 (byte)17 是键盘的映射编码.对应着的..你可以查一下..通过调用系统的DLL就可以实现模式键盘输入 ,,其实就是按下了某个键吧

解决方案 »

  1.   

    keybd_event发出的消息也会被阻拦。。没办法在那个程序里进行模拟按键阿。。
    还有其他办法么我现在只用Windows自带的屏幕键盘模拟输出过。。
    Osk.exe提没提供什么接口支持呢?
      

  2.   

    你向Osk发送鼠标点击消息应该就可以实现了
    用PostMessage(hWnd,WM_LBUTTONDOWN,。。
      

  3.   

    macker0030(今天先俯卧,明天再撑)
    先谢谢了。。不过有两个问题
    1、如何获取Osk中相对的鼠标位置,PostMessage中应该需要这个鼠标位置来作参数吧。
    2、PostMessage中第2和第3个参数的用什么数据?C#中好像没有WM_LBUTTONDOWN这些常量设置吧。。另外如果PostMessage的消息仍然被那个程序拦截的话,还有没有其他办法呢?
      

  4.   

    补充一下
    我用mouse_event发模拟鼠标信息。。也被拦截了。。-_-