/// <summary> /// 注册 /// </summary> /// <param name="hWnd">需要捕获手柄消息的窗口</param> /// <param name="joystickId">要捕获的手柄Id</param> public bool Register(IntPtr hWnd, int joystickId) { bool flag = false; int result = 0; API.JOYCAPS caps = new API.JOYCAPS(); if (API.joyGetNumDevs() != 0) { //拥有手柄.则判断手柄状态 result = API.joyGetDevCaps(joystickId, ref caps, Marshal.SizeOf(typeof(API.JOYCAPS))); if (result == API.JOYERR_NOERROR) { //手柄处于正常状态 flag = true; } } if (flag) { //注册消息 if (!this.IsRegister) { _HWndSource = HwndSource.FromHwnd(hWnd); _HWndSource.AddHook(WndProc); //Application.AddMessageFilter(this); } this.IsRegister = true; result = API.joySetCapture(hWnd, joystickId, caps.wPeriodMin * 2, false); if (result != API.JOYERR_NOERROR) { flag = false; } } return flag; }
/// <summary> /// 注册 /// </summary> /// <param name="hWnd">需要捕获手柄消息的窗口</param> /// <param name="joystickId">要捕获的手柄Id</param> public bool Register(IntPtr hWnd, int joystickId) { bool flag = false; int result = 0; API.JOYCAPS caps = new API.JOYCAPS(); if (API.joyGetNumDevs() != 0) { //拥有手柄.则判断手柄状态 result = API.joyGetDevCaps(joystickId, ref caps, Marshal.SizeOf(typeof(API.JOYCAPS))); if (result == API.JOYERR_NOERROR) { //手柄处于正常状态 flag = true; } } if (flag) { //注册消息 if (!this.IsRegister) { _HWndSource = HwndSource.FromHwnd(hWnd); _HWndSource.AddHook(WndProc); //Application.AddMessageFilter(this); } this.IsRegister = true; result = API.joySetCapture(hWnd, joystickId, caps.wPeriodMin * 2, false); if (result != API.JOYERR_NOERROR) { flag = false; } } return(flag); }