Gaming.Input не читает мои джойстики, в то время как Elite Dangerous является сфокусированным окном, но отлично работаетC#

Место общения программистов C#
Ответить
Anonymous
 Gaming.Input не читает мои джойстики, в то время как Elite Dangerous является сфокусированным окном, но отлично работает

Сообщение Anonymous »

Я писал небольшой макрос, который должен был циклически перемещаться по моим огневым группам, пока я стрелял гауссом вместо гаусса-гатлинга. Я, конечно, мог бы использовать уже доступный инструмент, но я предпочел попробовать что-то сам. Однако во время тестирования я открыл редактор и проверил, будет ли программа постоянно нажимать «N», пока нажата кнопка запуска на моем джойстике, и я был рад видеть, что это работало, даже когда приложение работало в фоновом режиме. Однако затем началась Elite Dangerous, мой корабль вывели из штаб-квартиры, и программа просто не стала делать то, что должна была делать. Я проверил:
- я назначил правую кнопку для циклического переключения групп огня и
- как только я переключаюсь на другое приложение, например редактор, оно снова работает отлично.
Это означает, что программа как будто блокирует показания джойстика, когда окно игры находится в фокусе.
Код:
/>JoystickMonitor.xaml.cs
using GamepadInterfaces.KeyboardAndMouse;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Text;
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.Shapes;
using Windows.Gaming.Input;

namespace GamepadInterfaces
{
///
/// Interaktionslogik für JoystickMonitor.xaml
///
public partial class JoystickMonitor : Window
{
private GatlingGaussMakro GaussMakro;

private SimpleBackgroundLoop GatlingGaussLoop;
private SimpleBackgroundLoop BackgroundLoop;
private RawGameController GameController;

private bool[] ButtonStateList;
private double[] AxisStateList;

private ObservableCollection ObservableButtonStates;
private ObservableCollection ObservableAxisStates;
public JoystickMonitor(RawGameController controller)
{
InitializeComponent();

GaussMakro = new GatlingGaussMakro(TimeSpan.FromMilliseconds(750), GetCodeForFireGroupButton());
GameController = controller;
BackgroundLoop = new SimpleBackgroundLoop();
GatlingGaussLoop = new SimpleBackgroundLoop();

ButtonStateList = new bool[GameController.ButtonCount];
AxisStateList = new double[GameController.AxisCount];

ObservableButtonStates = new ObservableCollection();
ObservableAxisStates = new ObservableCollection();

lvButtons.ItemsSource = ObservableButtonStates;
lvAxises.ItemsSource = ObservableAxisStates;

GatlingGaussLoop.Run(CallGatlingGaussMakro);
Thread.Sleep(200);
//BackgroundLoop.Run(UpdateLists);
}

private object CallGatlingGaussMakro()
{
GameController.GetCurrentReading(ButtonStateList, new GameControllerSwitchPosition[GameController.SwitchCount], AxisStateList);

GaussMakro.Activate(ButtonStateList[0]);

return null;
}

/// Some Code redacted for Stackoverflow

}
}


Подробнее здесь: https://stackoverflow.com/questions/798 ... cused-wind
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»