Пример #1
0
 private void Initialize()
 {
     if (Util.IsWin32())
     {
         XInputGamePadGetState = NativeMethods.XInputGamePadGetState_x86;
         XInputGamePadSetState = NativeMethods.XInputGamePadSetState_x86;
     }
     else if (Util.IsWin64())
     {
         XInputGamePadGetState = NativeMethods.XInputGamePadGetState_x64;
         XInputGamePadSetState = NativeMethods.XInputGamePadSetState_x64;
     }
     else
     {
         XInputGamePadGetState = NativeMethods.XInputGamePadGetState;
         XInputGamePadSetState = NativeMethods.XInputGamePadSetState;
     }
 }
Пример #2
0
        public bool IsConnected(uint playerIndex)
        {
            if (!DllAvailable)
            {
                return(false);
            }

            try
            {
                XInputState state;
                uint        result = XInputGamePadGetState(playerIndex, out state);
                return(result != ERROR_DEVICE_NOT_CONNECTED);
            }
            catch (DllNotFoundException)
            {
                if (XInputGamePadGetState != NativeMethods.XInputGamePadGetState)    // if _x86 or _x64 dll not exists
                {
                    XInputGamePadGetState = NativeMethods.XInputGamePadGetState;
                    return(IsConnected(playerIndex));
                }
                else    // no dll at all
                {
                    DllAvailable = false;
                    return(false);
                }
            }
            catch (BadImageFormatException) // use _x86 dll on x64 system, or _x64 dll on x86 system
            {
                DllAvailable = false;
                return(false);
            }
            catch (Exception)
            {
                DllAvailable = false;
                return(false);
            }
        }