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()); }
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(); } } }