На нашем сайте мы используем cookie для сбора информации технического характера и обрабатываем IP-адрес вашего местоположения. Продолжая использовать этот сайт, вы даете согласие на использование файлов cookies. Здесь вы можете узнать, как мы пользуемся файлами cookies.
Я согласен
логотип upread.ru

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




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





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




Хостинг за 60 рублей
Карты стран с гербами областей


© upread.ru 2013-2019
При перепечатке активная ссылка на сайт обязательна.
Задать вопрос
письмо
Здравствуйте! Вы можете задать мне любой вопрос. Если не получается отправить сообщение через эту форму, то пишите на почу up777up@yandex.ru
Отправляя сообщение я подтверждаю, что ознакомлен и согласен с политикой конфиденциальности данного сайта.