Работа с джойстиком в 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 или функции инициализации образа может вызвать зависание приложения.Решается проблема следующим образом:
- нажимаем Ctrl+Alt+E
- открываем список Managed Debugging Assistance
- находим пункт LoaderLock и убираем галочку
Теперь пробуем запустить и, если джойстик подключен и определен системой, то мы увидим следующую картину:
Таким образом, в этой части мы научились подключать библиотеки для работы с джойстиком, справляться с возможными затруднениями и определять число подключенных геймпадов. Если вам требуется помощь по C#, необходима программа или что-то еще, то вы можете написать на почту up777up@yandex.ru - я вам помогу за символическую плату.
Автор этого материала - я - Пахолков Юрий. Я оказываю услуги по написанию программ на языках Java, C++, C# (а также консультирую по ним) и созданию сайтов. Работаю с сайтами на CMS OpenCart, WordPress, ModX и самописными. Кроме этого, работаю напрямую с JavaScript, PHP, CSS, HTML - то есть могу доработать ваш сайт или помочь с веб-программированием. Пишите сюда.
Отправляя сообщение я подтверждаю, что ознакомлен и согласен с политикой конфиденциальности данного сайта.