public void Free()
 {
     if (deviceHandle != PFAKERINPUT_HANDLE.Zero)
     {
         fakerinput_free(deviceHandle);
         deviceHandle = PFAKERINPUT_HANDLE.Zero;
     }
 }
 public static extern bool fakerinput_update_absolute_mouse(PFAKERINPUT_HANDLE clientHandle, byte button, ushort x, ushort y,
                                                            byte wheelPosition, byte hWheelPosition);
 public FakerInput()
 {
     deviceHandle = fakerinput_alloc();
 }
 public static extern bool fakerinput_update_keyboard_enhanced(PFAKERINPUT_HANDLE vmulti, byte mediaKeys, byte enhancedKeys);
 public static extern bool fakerinput_update_keyboard(PFAKERINPUT_HANDLE vmulti, byte shiftKeyFlags, byte[] keyCodes);
 public static extern void fakerinput_disconnect(PFAKERINPUT_HANDLE vmulti);
 public static extern bool fakerinput_connect(PFAKERINPUT_HANDLE vmulti);
 public static extern void fakerinput_free(PFAKERINPUT_HANDLE vmulti);