返回提交历史
Modified
README.md
+1
-0
Modified
XFEExtension.NetCore.InputSimulator/InputSimulator.cs
+19
-2
Modified
XFEExtension.NetCore.InputSimulator/XFEExtension.NetCore.InputSimulator.csproj
+2
-2
XFEstudio/XFEExtension.NetCore.InputSimulator
新增检测鼠标按键是否按下事件
ddf0311
代码差异
3 个文件
+22
-4
@@ -43,4 +43,5 @@ using XFEExtension.NetCore.InputSimulator;
43
43
var screenSize = GetScreenSize();//获取屏幕的宽和高(像素)
44
44
var mousePoint = GetMousePosition();//获取鼠标的位置
45
45
var percentage = GetMousePointRelatively();//获取鼠标相对于屏幕的比值(范围是0-1的double型百分比)
46
var isLeftMouseDown = GetMouseDown(MouseButton.Left);//获取鼠标左键是否被按下
46
47
```
@@ -27,6 +27,8 @@ public static partial class InputSimulator
27
27
private static partial int ReleaseDC(IntPtr hWnd, IntPtr hDC);
28
28
[LibraryImport("user32.dll")]
29
29
private static partial int GetDpiForWindow(IntPtr hWnd);
30
[LibraryImport("user32.dll")]
31
private static partial short GetAsyncKeyState(int vKey);
30
32
#endregion
31
33
#region 常量
32
34
private const int KEYEVENTF_KEYDOWN = 0x0000; // 按键按下
@@ -39,6 +41,9 @@ public static partial class InputSimulator
39
41
private const uint MOUSEEVENTF_MIDDOWN = 0x0020; // 鼠标中键按下
40
42
private const uint MOUSEEVENTF_MIDUP = 0x0040; // 鼠标中键松开
41
43
private const uint MOUSEEVENTF_WHEEL = 0x0800; // 鼠标滚轮
44
private const int VK_LBUTTON = 0x01; // 检测鼠标左键
45
private const int VK_RBUTTON = 0x02; // 检测鼠标右键
46
private const int VK_MBUTTON = 0x04; // 检测鼠标中键
42
47
private const int SM_CXSCREEN = 0; // 屏幕宽度
43
48
private const int SM_CYSCREEN = 1; // 屏幕高度
44
49
#endregion
@@ -100,7 +105,7 @@ public static partial class InputSimulator
100
105
{
101
106
foreach (var key in keys.Select(key => key.ToString()))
102
107
{
103
if (key.ToUpper() == key)
108
if (key.Equals(key, StringComparison.CurrentCultureIgnoreCase))
104
109
{
105
110
keybd_event(0x10, 0, KEYEVENTF_KEYDOWN, IntPtr.Zero);
106
111
keybd_event(Encoding.ASCII.GetBytes(key).FirstOrDefault(), 0, KEYEVENTF_KEYDOWN, IntPtr.Zero);
@@ -125,7 +130,7 @@ public static partial class InputSimulator
125
130
{
126
131
foreach (var key in keys.Select(key => key.ToString()))
127
132
{
128
if (key.ToUpper() == key)
133
if (key.Equals(key, StringComparison.CurrentCultureIgnoreCase))
129
134
{
130
135
keybd_event(0x10, 0, KEYEVENTF_KEYDOWN, IntPtr.Zero);
131
136
keybd_event(Encoding.ASCII.GetBytes(key).FirstOrDefault(), 0, KEYEVENTF_KEYDOWN, IntPtr.Zero);
@@ -281,6 +286,18 @@ public static partial class InputSimulator
281
286
{
282
287
mouse_event(MOUSEEVENTF_WHEEL, GetMousePosition().X, GetMousePosition().Y, length, IntPtr.Zero);
283
288
}
289
/// <summary>
290
/// 检查鼠标是否按下
291
/// </summary>
292
/// <param name="button">鼠标按键</param>
293
/// <returns>是否被按下</returns>
294
public static bool GetMouseDown(MouseButton button) => button switch
295
{
296
MouseButton.Left => (GetAsyncKeyState(VK_LBUTTON) & 0x8000) != 0,
297
MouseButton.Right => (GetAsyncKeyState(VK_RBUTTON) & 0x8000) != 0,
298
MouseButton.Middle => (GetAsyncKeyState(VK_MBUTTON) & 0x8000) != 0,
299
_ => false
300
};
284
301
#endregion
285
302
#region 系统信息获取方法
286
303
/// <summary>
@@ -18,10 +18,10 @@
18
18
<PackageReadmeFile>README.md</PackageReadmeFile>
19
19
<RepositoryUrl>https://github.com/XFEstudio/XFEExtension.NetCore.InputSimulator</RepositoryUrl>
20
20
<PackageTags>XFE;拓展;键盘;按键;模拟输入;Input</PackageTags>
21
<PackageReleaseNotes>新增获取窗口的缩放倍率方法</PackageReleaseNotes>
21
<PackageReleaseNotes>新增获取鼠标按键是否按下方法</PackageReleaseNotes>
22
22
<PackageLicenseFile>LICENSE</PackageLicenseFile>
23
23
<PackageRequireLicenseAcceptance>True</PackageRequireLicenseAcceptance>
24
<Version>2.1.0</Version>
24
<Version>2.2.0</Version>
25
25
<PackageIcon>logoIcon.png</PackageIcon>
26
26
</PropertyGroup>
27
27