static void Main(string[] args) { try { joystick = new vJoy(); iReport = new vJoy.JoystickState(); } catch { Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("vJoy error,please reinstall vjoy."); return; } if (!joystick.vJoyEnabled()) { Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("vJoy driver not enabled: Failed Getting vJoy attributes.\n"); return; } // Get the state of the requested device VjdStat status = joystick.GetVJDStatus(id); switch (status) { case VjdStat.VJD_STAT_OWN: Console.WriteLine("vJoy Device {0} is already owned by this feeder\n", id); break; case VjdStat.VJD_STAT_FREE: Console.WriteLine("vJoy Device {0} is free\n", id); break; case VjdStat.VJD_STAT_BUSY: Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("vJoy Device {0} is already owned by another feeder\nCannot continue\n", id); return; case VjdStat.VJD_STAT_MISS: Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("vJoy Device {0} is not installed or disabled\nCannot continue\n", id); return; default: Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("vJoy Device {0} general error\nCannot continue\n", id); return; }; // Check which axes are supported bool AxisX = joystick.GetVJDAxisExist(id, HID_USAGES.HID_USAGE_X); bool AxisY = joystick.GetVJDAxisExist(id, HID_USAGES.HID_USAGE_Y); bool AxisZ = joystick.GetVJDAxisExist(id, HID_USAGES.HID_USAGE_Z); bool AxisRX = joystick.GetVJDAxisExist(id, HID_USAGES.HID_USAGE_RX); bool AxisRY = joystick.GetVJDAxisExist(id, HID_USAGES.HID_USAGE_RX); bool AxisRZ = joystick.GetVJDAxisExist(id, HID_USAGES.HID_USAGE_RZ); bool AxisSL0 = joystick.GetVJDAxisExist(id, HID_USAGES.HID_USAGE_SL0); bool AxisSL1 = joystick.GetVJDAxisExist(id, HID_USAGES.HID_USAGE_SL1); // Get the number of buttons and POV Hat switchessupported by this vJoy device int nButtons = joystick.GetVJDButtonNumber(id); int ContPovNumber = joystick.GetVJDContPovNumber(id); int DiscPovNumber = joystick.GetVJDDiscPovNumber(id); // Print results Console.WriteLine("vJoy Device {0}", id); Console.WriteLine("Checking...Numner of buttons\t\t{0}\tPass", nButtons); Console.WriteLine("Checking...Numner of Continuous POVs\t{0}\tPass", ContPovNumber); Console.WriteLine("Checking...Numner of Descrete POVs\t{0}\tPass", DiscPovNumber); if (ContPovNumber > DiscPovNumber) isPovCon = true; Console.WriteLine("Checking...Axis X\t\t\t{0}\tPass", AxisX ? "Yes" : "No"); Console.WriteLine("Checking...Axis Y\t\t\t{0}\tPass", AxisX ? "Yes" : "No"); Console.WriteLine("Checking...Axis Z\t\t\t{0}\tPass", AxisX ? "Yes" : "No"); Console.WriteLine("Checking...Axis Rx\t\t\t{0}\tPass", AxisRX ? "Yes" : "No"); Console.WriteLine("Checking...Axis Ry\t\t\t{0}\tPass", AxisRY ? "Yes" : "No"); Console.WriteLine("Checking...Axis Rz\t\t\t{0}\tPass", AxisRZ ? "Yes" : "No"); Console.WriteLine("Checking...Axis SL0\t\t\t{0}\tPass", AxisSL0 ? "Yes" : "No"); Console.WriteLine("Checking...Axis SL1\t\t\t{0}\tPass", AxisSL1 ? "Yes" : "No"); // Test if DLL matches the driver UInt32 DllVer = 0, DrvVer = 0; bool match = joystick.DriverMatch(ref DllVer, ref DrvVer); if (match) Console.WriteLine("Checking...Version of Driver Matches DLL Version ({0:X})\n", DllVer); else Console.WriteLine("Checking...Version of Driver ({0:X}) does NOT match DLL Version ({1:X})\n", DrvVer, DllVer); // Acquire the target if ((status == VjdStat.VJD_STAT_OWN) || ((status == VjdStat.VJD_STAT_FREE) && (!joystick.AcquireVJD(id)))) { Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("Failed to acquire vJoy device number {0}.\n", id); return; } else Console.WriteLine("Acquired: vJoy device number {0}.\n", id); joystick.ResetAll(); Console.ForegroundColor = ConsoleColor.Green; Console.WriteLine("System All Green.Now Start..."); Console.ForegroundColor = ConsoleColor.White; readConfig(); printHello(); joystick.GetVJDAxisMax(id, HID_USAGES.HID_USAGE_X, ref axisMaxval); UdpState axisUdpState = new UdpState(); axisUdpState.ipEndPoint = new IPEndPoint(IPAddress.Any, AxisPort); axisUdpState.udpClient = new UdpClient(AxisPort); axisUdpState.udpClient.BeginReceive(AxisUDPRecieved, axisUdpState); UdpState ctlUdpState = new UdpState(); ctlUdpState.ipEndPoint = new IPEndPoint(IPAddress.Any, CtlPort); ctlUdpState.udpClient = new UdpClient(CtlPort); ctlUdpState.udpClient.BeginReceive(CtlUDPRecieved, ctlUdpState); try { NetworkInterface[] nics = NetworkInterface.GetAllNetworkInterfaces(); foreach (NetworkInterface adapter in nics) { if (adapter.OperationalStatus != OperationalStatus.Up) //filter unavaliable interface continue; if (adapter.NetworkInterfaceType == NetworkInterfaceType.Ethernet | adapter.NetworkInterfaceType == NetworkInterfaceType.Wireless80211) { IPInterfaceProperties ip = adapter.GetIPProperties(); UnicastIPAddressInformationCollection ipCollection = ip.UnicastAddresses; foreach (UnicastIPAddressInformation ipadd in ipCollection) { if (ipadd.Address.AddressFamily == AddressFamily.InterNetwork) //判断是否为ipv4 Console.WriteLine(adapter.Name + " : " + ipadd.Address.ToString());//获取ip } } } } catch (System.Security.SecurityException) { Console.WriteLine("firewall banned application."); } catch (Exception e) { Console.WriteLine(e.ToString()); } while (true) Thread.Sleep(1000000); }