如题DllImport("user32.dll", EntryPoint = "keybd_event", CharSet = CharSet.Auto, ExactSpelling = true)]
public static extern void Keybd_event(byte vk, byte scan, int flags, int extrainfo);
const int KEYEVENTF_EXTENDEDKEY = 0x1;
const int KEYEVENTF_KEYUP = 0x2;
//VK_MENU 相当于Alt键
Keybd_event((byte)12, 0x45, KEYEVENTF_EXTENDEDKEY, 0);//按下,有KEYEVENTF_KEYUP即为长按  
Keybd_event((byte)12, 0x45, KEYEVENTF_KEYUP, 0);//抬起不知道这种方法是如何实现的?

解决方案 »

  1.   

    使用timer?设定个时间阈值T,超过T则为长按偶的个人意见
      

  2.   

    长按就是有个KeyDown有个KeyUp组合成按键一次
    只要KeyDown后不KeyUp就可以了
    我做这个是用的大漠插件写外挂的一个com组件
    没用过你这种方法调用user32.。
      

  3.   

    除了KeyDown事件外还有KeyUp事件的,如果没有触发KeyUp事件就说明你一直按着某个键的了
      

  4.   

    长按在 windows 系统下好像没有什么意义,就相当于不断按某个键
      

  5.   

    最笨的方法,在触发的KeyDown事件里写个timeSpan,你想定义多长时间为长按都可以!