Skip to content

Commit e83c25a

Browse files
committed
feat: sim input for F key
1 parent 276f7bf commit e83c25a

15 files changed

+1018
-6
lines changed

src/Fischless.Relauncher/Core/Relaunchs/GenshinClicker.cs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,17 +9,17 @@ internal static class GenshinClicker
99
public static void LeftButtonClick(nint hWnd)
1010
{
1111
nint p = (16 << 16) | 16;
12-
User32.PostMessage(hWnd, User32.WindowMessage.WM_LBUTTONDOWN, IntPtr.Zero, p);
12+
_ = User32.PostMessage(hWnd, User32.WindowMessage.WM_LBUTTONDOWN, IntPtr.Zero, p);
1313
Thread.Sleep(100);
14-
User32.PostMessage(hWnd, User32.WindowMessage.WM_LBUTTONUP, IntPtr.Zero, p);
14+
_ = User32.PostMessage(hWnd, User32.WindowMessage.WM_LBUTTONUP, IntPtr.Zero, p);
1515
}
1616

1717
public static void LeftButtonClickBackground(nint hWnd)
1818
{
19-
User32.PostMessage(hWnd, User32.WindowMessage.WM_ACTIVATE, 1, 0);
19+
_ = User32.PostMessage(hWnd, User32.WindowMessage.WM_ACTIVATE, 1, 0);
2020
nint p = (16 << 16) | 16;
21-
User32.PostMessage(hWnd, User32.WindowMessage.WM_LBUTTONDOWN, IntPtr.Zero, p);
21+
_ = User32.PostMessage(hWnd, User32.WindowMessage.WM_LBUTTONDOWN, IntPtr.Zero, p);
2222
Thread.Sleep(100);
23-
User32.PostMessage(hWnd, User32.WindowMessage.WM_LBUTTONUP, IntPtr.Zero, p);
23+
_ = User32.PostMessage(hWnd, User32.WindowMessage.WM_LBUTTONUP, IntPtr.Zero, p);
2424
}
2525
}

src/Fischless.Relauncher/Core/Relaunchs/GenshinRelaunching.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
using Fischless.Relauncher.Extensions;
1+
using Fischless.Relauncher.Core.WindowsInput;
2+
using Fischless.Relauncher.Extensions;
23
using Fischless.Relauncher.Helper;
34
using Fischless.Relauncher.Models;
45
using Fischless.Relauncher.Relaunchs;
@@ -246,6 +247,7 @@ await Task.Run(async () =>
246247
if (process != null)
247248
{
248249
GenshinClicker.LeftButtonClickBackground(process.MainWindowHandle);
250+
WeakReferenceInputSimulator.Keyboard.KeyPress(User32.VK.VK_F);
249251
}
250252
}
251253
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
using Vanara.PInvoke;
2+
3+
namespace Fischless.Relauncher.Core.WindowsInput;
4+
5+
public interface IInputDeviceStateAdaptor
6+
{
7+
public bool IsKeyDown(User32.VK keyCode);
8+
9+
public bool IsKeyUp(User32.VK keyCode);
10+
11+
public bool IsHardwareKeyDown(User32.VK keyCode);
12+
13+
public bool IsHardwareKeyUp(User32.VK keyCode);
14+
15+
public bool IsTogglingKeyInEffect(User32.VK keyCode);
16+
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
using Vanara.PInvoke;
2+
3+
namespace Fischless.Relauncher.Core.WindowsInput;
4+
5+
internal interface IInputMessageDispatcher
6+
{
7+
public void DispatchInput(User32.INPUT[] inputs);
8+
}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
namespace Fischless.Relauncher.Core.WindowsInput;
2+
3+
public interface IInputSimulator
4+
{
5+
public IKeyboardSimulator Keyboard { get; }
6+
7+
public IMouseSimulator Mouse { get; }
8+
9+
public IInputDeviceStateAdaptor InputDeviceState { get; }
10+
}
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
using Vanara.PInvoke;
2+
3+
namespace Fischless.Relauncher.Core.WindowsInput;
4+
5+
public interface IKeyboardSimulator
6+
{
7+
public IMouseSimulator Mouse { get; }
8+
9+
public IKeyboardSimulator KeyDown(User32.VK keyCode);
10+
11+
public IKeyboardSimulator KeyDown(bool? isExtendedKey, User32.VK keyCode);
12+
13+
public IKeyboardSimulator KeyPress(User32.VK keyCode);
14+
15+
public IKeyboardSimulator KeyPress(bool? isExtendedKey, User32.VK keyCode);
16+
17+
public IKeyboardSimulator KeyPress(params User32.VK[] keyCodes);
18+
19+
public IKeyboardSimulator KeyPress(bool? isExtendedKey, params User32.VK[] keyCodes);
20+
21+
public IKeyboardSimulator KeyUp(User32.VK keyCode);
22+
23+
public IKeyboardSimulator KeyUp(bool? isExtendedKey, User32.VK keyCode);
24+
25+
public IKeyboardSimulator ModifiedKeyStroke(IEnumerable<User32.VK> modifierKeyCodes, IEnumerable<User32.VK> keyCodes);
26+
27+
public IKeyboardSimulator ModifiedKeyStroke(IEnumerable<User32.VK> modifierKeyCodes, User32.VK keyCode);
28+
29+
public IKeyboardSimulator ModifiedKeyStroke(User32.VK modifierKey, IEnumerable<User32.VK> keyCodes);
30+
31+
public IKeyboardSimulator ModifiedKeyStroke(User32.VK modifierKeyCode, User32.VK keyCode);
32+
33+
public IKeyboardSimulator TextEntry(string text);
34+
35+
public IKeyboardSimulator TextEntry(char character);
36+
37+
public IKeyboardSimulator Sleep(int millsecondsTimeout);
38+
39+
public IKeyboardSimulator Sleep(TimeSpan timeout);
40+
}
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
namespace Fischless.Relauncher.Core.WindowsInput;
2+
3+
public interface IMouseSimulator
4+
{
5+
public IKeyboardSimulator Keyboard { get; }
6+
7+
public IMouseSimulator MoveMouseBy(int pixelDeltaX, int pixelDeltaY);
8+
9+
public IMouseSimulator MoveMouseTo(double absoluteX, double absoluteY);
10+
11+
public IMouseSimulator MoveMouseToPositionOnVirtualDesktop(double absoluteX, double absoluteY);
12+
13+
public IMouseSimulator LeftButtonDown();
14+
15+
public IMouseSimulator LeftButtonUp();
16+
17+
public IMouseSimulator LeftButtonClick();
18+
19+
public IMouseSimulator LeftButtonDoubleClick();
20+
21+
public IMouseSimulator MiddleButtonDown();
22+
23+
public IMouseSimulator MiddleButtonUp();
24+
25+
public IMouseSimulator MiddleButtonClick();
26+
27+
public IMouseSimulator MiddleButtonDoubleClick();
28+
29+
public IMouseSimulator RightButtonDown();
30+
31+
public IMouseSimulator RightButtonUp();
32+
33+
public IMouseSimulator RightButtonClick();
34+
35+
public IMouseSimulator RightButtonDoubleClick();
36+
37+
public IMouseSimulator XButtonDown(int buttonId);
38+
39+
public IMouseSimulator XButtonUp(int buttonId);
40+
41+
public IMouseSimulator XButtonClick(int buttonId);
42+
43+
public IMouseSimulator XButtonDoubleClick(int buttonId);
44+
45+
public IMouseSimulator VerticalScroll(int scrollAmountInClicks);
46+
47+
public IMouseSimulator HorizontalScroll(int scrollAmountInClicks);
48+
49+
public IMouseSimulator Sleep(int millsecondsTimeout);
50+
51+
public IMouseSimulator Sleep(TimeSpan timeout);
52+
}

0 commit comments

Comments
 (0)