Раньше я добавлял джойстики в свои приложения WinForms, используя класс Microsoft.DirectX.DirectInput.Device. Теперь я хочу сделать то же самое с WPF.
Вот очень простой пример кода, который я использую.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.Windows.Interop;
using Microsoft.DirectX.DirectInput;
namespace JoysticksTest
{
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
// HANGS WHEN ENTERING DetectInstalledDevices METHOD!!!
DetectInstalledDevices();
}
private void DetectInstalledDevices()
{
// Find all the GameControl devices that are attached.
DeviceList gameControllerList = Manager.GetDevices(DeviceClass.GameControl, EnumDevicesFlags.AttachedOnly);
// check that we have at least one device.
if (gameControllerList.Count > 0)
{
for (int i = 0; i < gameControllerList.Count; i++)
{
// Move to the first device
gameControllerList.MoveNext();
DeviceInstance deviceInstance = (DeviceInstance)gameControllerList.Current;
if (deviceInstance.DeviceType == DeviceType.Joystick)
{
// Some code here
}
}
}
}
}
}
Но мое приложение WPF просто зависает.
Что я делаю не так? На моем компьютере установлена ОС Windows 8.1.
Это WPF или неправильная версия Microsoft.DirectX.DirectInput.dll?