diff --git a/BetterGenshinImpact/Core/Monitor/DirectInputMonitor.cs b/BetterGenshinImpact/Core/Monitor/DirectInputMonitor.cs new file mode 100644 index 00000000..3f9e7a6c --- /dev/null +++ b/BetterGenshinImpact/Core/Monitor/DirectInputMonitor.cs @@ -0,0 +1,39 @@ +using SharpDX.DirectInput; +using System; +using System.Diagnostics; +using System.Threading.Tasks; + +namespace BetterGenshinImpact.Core.Monitor; + +public class DirectInputMonitor +{ + public void Start() + { + var directInput = new DirectInput(); + var device = new Mouse(directInput); + + device.SetCooperativeLevel(IntPtr.Zero, CooperativeLevel.Background | CooperativeLevel.NonExclusive); + + Task.Run(() => + { + while (true) + { + device.Acquire(); + MouseState state = device.GetCurrentState(); + Debug.WriteLine($"{state.X} {state.Y} {state.Buttons[0]} {state.Buttons[1]}"); + System.Threading.Thread.Sleep(1000); // 10ms, equivalent to CLOCKS_PER_SEC/100 + } + }); + } + + // var mouseGuid = Guid.Empty; + // foreach (var deviceInstance in directInput.GetDevices(DeviceType.Mouse, DeviceEnumerationFlags.AllDevices)) + // { + // mouseGuid = deviceInstance.InstanceGuid; + // } + // if (mouseGuid == Guid.Empty) + // { + // Debug.WriteLine("No mouse found."); + // return; + // } +} diff --git a/BetterGenshinImpact/ViewModel/Pages/KeyMouseRecordPageViewModel.cs b/BetterGenshinImpact/ViewModel/Pages/KeyMouseRecordPageViewModel.cs index 9477f177..c3284fc7 100644 --- a/BetterGenshinImpact/ViewModel/Pages/KeyMouseRecordPageViewModel.cs +++ b/BetterGenshinImpact/ViewModel/Pages/KeyMouseRecordPageViewModel.cs @@ -1,6 +1,8 @@ using System.Diagnostics; using System.Threading.Tasks; +using BetterGenshinImpact.Core.Monitor; using BetterGenshinImpact.Core.Recorder; +using BetterGenshinImpact.Core.Simulator; using CommunityToolkit.Mvvm.ComponentModel; using CommunityToolkit.Mvvm.Input; using Wpf.Ui.Controls; @@ -22,7 +24,9 @@ public partial class KeyMouseRecordPageViewModel : ObservableObject, INavigation [RelayCommand] public void OnStartRecord() { - GlobalKeyMouseRecord.Instance.StartRecord(); + // GlobalKeyMouseRecord.Instance.StartRecord(); + new DirectInputMonitor().Start(); + Simulation.SendInput.Mouse.MoveMouseBy(500, 0); } [RelayCommand] diff --git a/Fischless.GameCapture/Fischless.GameCapture.csproj b/Fischless.GameCapture/Fischless.GameCapture.csproj index e5d0b5aa..4c1b0f00 100644 --- a/Fischless.GameCapture/Fischless.GameCapture.csproj +++ b/Fischless.GameCapture/Fischless.GameCapture.csproj @@ -13,6 +13,7 @@ +