public override Action Start() { IntPtr handle = Process.GetCurrentProcess().MainWindowHandle; KeyboardDevice = new SharpDX.DirectInput.Keyboard(DirectInputInstance); if (KeyboardDevice == null) { throw new Exception("Failed to create keyboard device"); } KeyboardDevice.SetCooperativeLevel(handle, CooperativeLevel.Background | CooperativeLevel.NonExclusive); KeyboardDevice.Acquire(); KeyboardDevice.GetCurrentState(ref KeyState); mouseDevice = new SharpDX.DirectInput.Mouse(DirectInputInstance); if (mouseDevice == null) { throw new Exception("Failed to create mouse device"); } mouseDevice.SetCooperativeLevel(handle, CooperativeLevel.Background | CooperativeLevel.NonExclusive); mouseDevice.Properties.AxisMode = DeviceAxisMode.Relative; // Get delta values mouseDevice.Acquire(); getPressedStrategy = new GetPressedStrategy <int>(IsDown); setPressedStrategy = new SetPressedStrategy <int>(KeyOrButtonDown, KeyOrButtonUp); OnStarted(this, new EventArgs()); return(null); }
public override void Stop() { SF = null; // Don't leave any keys pressed for (int i = 1; i < MyKeyDown.Length; i++) { if (MyKeyDown[i]) { KeyOrButtonUp(i); } } if (KeyboardDevice != null) { KeyboardDevice.Unacquire(); KeyboardDevice.Dispose(); KeyboardDevice = null; } if (mouseDevice != null) { mouseDevice.Unacquire(); mouseDevice.Dispose(); mouseDevice = null; } if (DirectInputInstance != null) { DirectInputInstance.Dispose(); DirectInputInstance = null; } }