Работа с джойстиком в C#: часть 1


Эта статья первая из цикла "Работа с джойстиком в c#". В ней мы просто научимся определять количество джойстиков в системе, а перед этим рассмотрим все возможные подводные камни.

Итак, подключим самый обычный джойстик ocklick к нашему компьютеру, на котором установлена Microsoft Visual C# 2010 Express и попробуем для начала найти его с помощью си шарпа. Для этого создадим проект windows forms и подключим к нему библиотеку Microsoft.DirectX.DirectInput.dll. Делается это так:

Проект -> Добавить ссылку.. -> Обзор -> "C:\Windows\Microsoft.NET\DirectX for Managed Code\1.0.2902.0\Microsoft.DirectX.DirectInput.dll"

Однако, если вы попробуете запустить какой-нибудь код, использующий данную библиотеку, то приложение просто зависнет (если используется .net framework 4.0 и выше). Самое простое решение таково: добавить в проект файл app.config со следующим текстом:

<?xml version="1.0"?>
<configuration>
  <startup useLegacyV2RuntimeActivationPolicy="true">
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0,Profile=Client"/>
  </startup>
</configuration>
Вот теперь можно попробовать набрать код ниже и запустить программу на компиляцию и выполнение.

using System;
using System.Windows.Forms;
using Microsoft.DirectX.DirectInput;

namespace sf
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {         
            DeviceList Js = Microsoft.DirectX.DirectInput.Manager.GetDevices(DeviceClass.GameControl, EnumDevicesFlags.AttachedOnly);
            label1.Text = (Js.Count.ToString());           
        }
    }
}
В том случае, если выскакивает ошибка типа "Обнаружено событие" LoaderLock:
Библиотека "C:\Windows\assembly\GAC\Microsoft.DirectX\1.0.2902.0__31bf3856ad364e35\Microsoft.DirectX.dll" пытается выполнить управляемый код под блокировкой OS Loader. Запуск управляемого кода в пределах функции DllMain или функции инициализации образа может вызвать зависание приложения.
Решается проблема следующим образом:
  1. нажимаем Ctrl+Alt+E
  2. открываем список Managed Debugging Assistance
  3. находим пункт LoaderLock и убираем галочку

Теперь пробуем запустить и, если джойстик подключен и определен системой, то мы увидим следующую картину:


Таким образом, в этой части мы научились подключать библиотеки для работы с джойстиком, справляться с возможными затруднениями и определять число подключенных геймпадов. Если вам требуется помощь по C#, необходима программа или что-то еще, то вы можете написать на почту up777up@yandex.ru - я вам помогу за символическую плату.
Автор этого материала - я - Пахолков Юрий. Я оказываю услуги по написанию программ на языках Java, C++, C# (а также консультирую по ним) и созданию сайтов. Работаю с сайтами на CMS OpenCart, WordPress, ModX и самописными. Кроме этого, работаю напрямую с JavaScript, PHP, CSS, HTML - то есть могу доработать ваш сайт или помочь с веб-программированием. Пишите сюда.

тегистатьи IT, си шарп, джойстик




Отправляя сообщение я подтверждаю, что ознакомлен и согласен с политикой конфиденциальности данного сайта.




Графический интерфейс пользователя
Прокси для любых целей
Онлайн разблокировка Folder Guard