Нужна помощь в реализации примера обратной связи directinput force в C#
Код ниже. То, что я пытаюсь сделать, - это создать exe-файл, который при запуске выполняет силовую обратную связь, определенную в переменных, а затем завершает работу. Пользователь не должен видеть никакого графического интерфейса. В качестве второго шага я хотел бы включить аргументы для exe, чтобы контролировать продолжительность, но это уже другая история.
DeviceList xDeviceList = Manager.GetDevices(DeviceClass.GameControl, EnumDevicesFlags.AttachedOnly); DeviceInstance someDeviceInstance; foreach (DeviceInstance deviceInstance in xDeviceList) { someDeviceInstance = deviceInstance; break; } Device someDevice = new Device(someDeviceInstance.InstanceGuid); someDevice.SetCooperativeLevel(this.Handle, CooperativeLevelFlags.Exclusive | CooperativeLevelFlags.Background); int[] axis = new int[0]; foreach (DeviceObjectInstance doi in someDevice.Objects) { if((doi.Flags & (int)ObjectInstanceFlags.Actuator) != 0) { axis = new int[axis.Length + 1]; axis[axis.Length - 1] = doi.Offset; } } someDevice.Acquire(); Effect effect = new Effect(); effect.SetDirection(new int[axis.Length]); effect.SetAxes(new int[axis.Length]); effect.ConditionStruct = new Condition[axis.Length]; effect.Flags = EffectFlags.Cartesian | EffectFlags.ObjectOffsets; effect.Duration = int.MaxValue; effect.SamplePeriod = 0; effect.Gain = 10000; effect.TriggerButton = (int)Microsoft.DirectX.DirectInput.Button.NoTrigger; effect.TriggerRepeatInterval = 0; effect.UsesEnvelope = false; effect.EffectType = Microsoft.DirectX.DirectInput.EffectType.ConstantForce; effect.StartDelay = 0; effect.Constant = new Microsoft.DirectX.DirectInput.ConstantForce(); effect.Constant.Magnitude = -5000; EffectObject effectObject = null; foreach (EffectInformation ei in someDevice.GetEffects(EffectType.ConstantForce)) { effectObject = new EffectObject(ei.EffectGuid, effect, someDevice); } effectObject.SetParameters(effect, EffectParameterFlags.Start );
Что я уже пробовал:
Добавил ссылки на DirectX, удалил графический интерфейс и запихнул код в классы, но часть дескриптора вызывает ошибки.
Patrice T
И у вас есть проблемы с этим кодом ?
Member 13322907
Ну, да. Это, вероятно, чрезвычайно тривиально решить. Главная проблема заключается в том, что я не могу поместить его в статическую пустоту, а когда я использую публичную пустоту, я не могу получить к ней доступ из статической пустоты.
Patrice T
Воспользуйся Улучшить вопрос чтобы обновить ваш вопрос.
Чтобы каждый мог обратить внимание на эту информацию.
Member 13322907
Я опустил эту часть, потому что не знаю, правильный ли это подход.