XFE Git
XFE Studio Git
Git 首页 全局搜索
XFE 主站 文档 NuGet

XFEExtension.NetCore.InputSimulator

【DLL】XFE各类拓展的模拟键盘输入

公开
关注 0 Fork 0 Star 0
返回提交历史

XFEstudio/XFEExtension.NetCore.InputSimulator

新增检测鼠标按键是否按下事件

ddf0311
XFE工作室室长 <mail@xfegzs.com>
提交于

代码差异

3 个文件 +22 -4
Modified README.md +1 -0
@@ -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 ```
Modified XFEExtension.NetCore.InputSimulator/InputSimulator.cs +19 -2
@@ -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>
Modified XFEExtension.NetCore.InputSimulator/XFEExtension.NetCore.InputSimulator.csproj +2 -2
@@ -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