コード例 #1
0
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);

            #if QuickTest
            DirectInput di = new DirectInput();
            di.Setup();
            DeviceInstance[] connected = di.ListDevices(DeviceClass.GameController, DeviceFlag.AttachedOnly);
            if (connected.Length > 0)
            {
                if (connected.Length > 0)
                {
                    DirectInput8Device device = di.CreateDevice(connected[0].guidInstance);
                    device.SetDataFormat(DataFormat.Joystick2);
                    device.Acquire();

                    if (device.Update())
                    {
                        JoyState2 state = (JoyState2)device.State;
                    }
                    else
                    {
                        System.Diagnostics.Debugger.Break();
                    }
                }
            }
            #endif
            Application.Run(new MainForm());
        }
コード例 #2
0
        private void timer1_Tick(object sender, EventArgs e)
        {
            StringBuilder sb = new StringBuilder();

            foreach (DirectInput8Device device in devices)
            {
                if (device.Update())
                {
                    sb.Clear();
                    object state = device.State;
                    if (!(state is JoyState2))
                    {
                        JoyState2 joy = (JoyState2)state;
                        byte[]    rgb;
                        uint[]    pov;
                        int[]     rgl;
                        int[]     rglV;
                        int[]     rglA;
                        int[]     rglS;
                        unsafe
                        {
                            rgl  = Unfix(joy.rglSlider, JoyState2.rglS_Len);
                            rgb  = Unfix(joy.rgbButtons, JoyState2.rgb_Len);
                            pov  = Unfix(joy.rgdwPOV, JoyState2.rgd_Len);
                            rglV = Unfix(joy.rglVSlider, JoyState2.rglVS_len);
                            rglA = Unfix(joy.rglASlider, JoyState2.rglAS_len);
                            rglS = Unfix(joy.rglFSlider, JoyState2.rglFS_Len);
                        }
                        sb.AppendFormat("rgl = {0}\n", String.Join(",", rgl));
                        sb.AppendFormat("rgb = {0}\n", String.Join(",", rgb));
                        sb.AppendFormat("pov = {0}\n", String.Join(",", pov));
                        sb.AppendFormat("rglV = {0}\n", String.Join(",", rglV));
                        sb.AppendFormat("rglA = {0}\n", String.Join(",", rglA));
                        sb.AppendFormat("rglS = {0}\n", String.Join(",", rglS));
                    }
                    else
                    {
                        FieldInfo[] fields = state.GetType().GetFields(BindingFlags.Public | BindingFlags.Instance);
                        foreach (FieldInfo fi in fields)
                        {
                            object value = fi.GetValue(state);
                            if (value.ToString().EndsWith("FixedBuffer"))
                            {
                                Type t = value.GetType();
                                System.Diagnostics.Debugger.Break();
                            }
                            else
                            {
                                sb.AppendFormat("{0} = {1}\n", fi.Name, value);
                            }
                        }
                    }

                    label1.Text = sb.ToString();
                }
            }
        }