Работа с джойстиком в 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>
Вот теперь можно попробовать набрать код ниже и запустить программу на компиляцию и выполнение.

    1. using System;
    2. using System.Windows.Forms;
    3. using Microsoft.DirectX.DirectInput;
    4.  
    5. namespace sf
    6. {
    7. public partial class Form1 : Form
    8. {
    9. public Form1()
    10. {
    11. InitializeComponent();
    12. }
    13.  
    14. private void Form1_Load(object sender, EventArgs e)
    15. {
    16. DeviceList Js = Microsoft.DirectX.DirectInput.Manager.GetDevices(DeviceClass.GameControl, EnumDevicesFlags.AttachedOnly);
    17. label1.Text = (Js.Count.ToString());
    18. }
    19. }
    20. }
В том случае, если выскакивает ошибка типа "Обнаружено событие" 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, си шарп, джойстик




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




Урок 16. Интерполяция строк JavaScript
Урок 4. Конструкторы и финализаторы C#
Программа шутка "Не меняй!"
На нашем сайте мы используем cookie для сбора информации технического характера и обрабатываем IP-адрес вашего местоположения. Продолжая использовать этот сайт, вы даете согласие на использование файлов cookies. Здесь вы можете узнать, как мы пользуемся файлами cookies.
Я согласен