From 0dea2754f526d34806db674cf3b26e7d7b09d3a4 Mon Sep 17 00:00:00 2001 From: lalakii Date: Mon, 11 Mar 2024 03:16:06 +0800 Subject: [PATCH] MouseClickTool2024 --- .gitignore | 4 + MouseClickTool.csproj | 86 +++++++++++++ MouseClickTool.csproj.user | 14 +++ MouseClickTool.sln | 22 ++++ README.md | 19 +++ app.manifest | 75 ++++++++++++ demo.jpg | Bin 0 -> 49072 bytes main.Designer.cs | 243 +++++++++++++++++++++++++++++++++++++ main.cs | 192 +++++++++++++++++++++++++++++ 9 files changed, 655 insertions(+) create mode 100644 .gitignore create mode 100644 MouseClickTool.csproj create mode 100644 MouseClickTool.csproj.user create mode 100644 MouseClickTool.sln create mode 100644 README.md create mode 100644 app.manifest create mode 100644 demo.jpg create mode 100644 main.Designer.cs create mode 100644 main.cs diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..0ec325e --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +# ignore +bin/ +.vs/ +obj/ \ No newline at end of file diff --git a/MouseClickTool.csproj b/MouseClickTool.csproj new file mode 100644 index 0000000..e3527b2 --- /dev/null +++ b/MouseClickTool.csproj @@ -0,0 +1,86 @@ + + + + + Debug + AnyCPU + {64FA4132-AC70-4006-9495-F974EE2DD808} + WinExe + MouseClickTool + MouseClickTool + v4.8 + 512 + true + true + false + + publish\ + true + Disk + false + Foreground + 7 + Days + false + false + true + iamverylovely + 0 + 1.0.0.%2a + false + true + + + app.manifest + + + AnyCPU + bin\ + 0 + Off + none + 512 + false + true + false + false + + + OnOutputUpdated + + + + + + + + + + Form + + + main.cs + + + + + + False + Microsoft .NET Framework 4.7.2 %28x86 和 x64%29 + true + + + False + .NET Framework 3.5 SP1 + false + + + + + + + + + + + \ No newline at end of file diff --git a/MouseClickTool.csproj.user b/MouseClickTool.csproj.user new file mode 100644 index 0000000..993e540 --- /dev/null +++ b/MouseClickTool.csproj.user @@ -0,0 +1,14 @@ + + + + publish\ + + + + + + zh-CN + false + ShowAllFiles + + \ No newline at end of file diff --git a/MouseClickTool.sln b/MouseClickTool.sln new file mode 100644 index 0000000..f27d234 --- /dev/null +++ b/MouseClickTool.sln @@ -0,0 +1,22 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 16 +VisualStudioVersion = 16.0.30223.230 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MouseClickTool", "MouseClickTool.csproj", "{64FA4132-AC70-4006-9495-F974EE2DD808}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|x64 = Debug|x64 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {64FA4132-AC70-4006-9495-F974EE2DD808}.Debug|x64.ActiveCfg = Debug|x64 + {64FA4132-AC70-4006-9495-F974EE2DD808}.Debug|x64.Build.0 = Debug|x64 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {E084C909-99EC-4CA3-A898-31D8F2905EB7} + EndGlobalSection +EndGlobal diff --git a/README.md b/README.md new file mode 100644 index 0000000..41b2a95 --- /dev/null +++ b/README.md @@ -0,0 +1,19 @@ +[![Windows .exe program](https://raster.shields.io/badge/Windows%20.exe-program-blue.png)](https://ru.wikipedia.org/wiki/.EXE) + +# MouseClickTool + +简单好用的鼠标连点器,因为玩游戏需要连点,在网上找了好多连点器,有的居然还要收费,一向穷苦的我感觉为此花钱很不值得,索性自己写了个。。。 + +## 使用帮助 + +如何退出?因为注册全局热键麻烦,所以懒得搞,如果鼠标点击频率过快无法停下来,请先让程序窗口到前台,然后按 ALT+F4 关闭程序。 + +## 界面预览 + + + +## 下载 + +[本地下载](https://github.com/lalakii/MouseClickTool/releases) + +[备用下载 蓝奏云](https://a01.lanzout.com/iWVpI1qzth8h) \ No newline at end of file diff --git a/app.manifest b/app.manifest new file mode 100644 index 0000000..af798ce --- /dev/null +++ b/app.manifest @@ -0,0 +1,75 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + + + + + + + + diff --git a/demo.jpg b/demo.jpg new file mode 100644 index 0000000000000000000000000000000000000000..df58be7dabe4654d29bd43ec546ab557847a5209 GIT binary patch literal 49072 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 E4%UWV2><{9 literal 0 HcmV?d00001 diff --git a/main.Designer.cs b/main.Designer.cs new file mode 100644 index 0000000..5b62ad3 --- /dev/null +++ b/main.Designer.cs @@ -0,0 +1,243 @@ +namespace MouseClickTool +{ + partial class main + { + /// + /// 必需的设计器变量。 + /// + private System.ComponentModel.IContainer components = null; + + /// + /// 清理所有正在使用的资源。 + /// + /// 如果应释放托管资源,为 true;否则为 false。 + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows 窗体设计器生成的代码 + + /// + /// 设计器支持所需的方法 - 不要修改 + /// 使用代码编辑器修改此方法的内容。 + /// + private void InitializeComponent() + { + this.groupBox1 = new System.Windows.Forms.GroupBox(); + this.url = new System.Windows.Forms.Label(); + this.label2 = new System.Windows.Forms.Label(); + this.label1 = new System.Windows.Forms.Label(); + this.groupBox2 = new System.Windows.Forms.GroupBox(); + this.groupBox3 = new System.Windows.Forms.GroupBox(); + this.comboBox1 = new System.Windows.Forms.ComboBox(); + this.label4 = new System.Windows.Forms.Label(); + this.is_ms = new System.Windows.Forms.TextBox(); + this.btn_start = new System.Windows.Forms.Button(); + this.btn_close = new System.Windows.Forms.Label(); + this.title = new System.Windows.Forms.Label(); + this.textBox1 = new System.Windows.Forms.TextBox(); + this.btn_min = new System.Windows.Forms.Label(); + this.groupBox1.SuspendLayout(); + this.groupBox2.SuspendLayout(); + this.groupBox3.SuspendLayout(); + this.SuspendLayout(); + // + // groupBox1 + // + this.groupBox1.Controls.Add(this.url); + this.groupBox1.Controls.Add(this.label2); + this.groupBox1.Controls.Add(this.label1); + this.groupBox1.Location = new System.Drawing.Point(20, 80); + this.groupBox1.Name = "groupBox1"; + this.groupBox1.Size = new System.Drawing.Size(469, 85); + this.groupBox1.TabIndex = 0; + this.groupBox1.TabStop = false; + this.groupBox1.Text = "说明"; + // + // url + // + this.url.AutoSize = true; + this.url.ForeColor = System.Drawing.SystemColors.HotTrack; + this.url.Location = new System.Drawing.Point(8, 57); + this.url.Name = "url"; + this.url.Size = new System.Drawing.Size(335, 15); + this.url.TabIndex = 2; + this.url.Text = "https://github.com/lalakii/MouseClickTool"; + // + // label2 + // + this.label2.AutoSize = true; + this.label2.Location = new System.Drawing.Point(231, 33); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(67, 15); + this.label2.TabIndex = 1; + this.label2.Text = "源代码:"; + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Location = new System.Drawing.Point(8, 33); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(217, 15); + this.label1.TabIndex = 0; + this.label1.Text = "本软件为开源软件,欢迎使用!"; + // + // groupBox2 + // + this.groupBox2.Controls.Add(this.textBox1); + this.groupBox2.Location = new System.Drawing.Point(20, 176); + this.groupBox2.Name = "groupBox2"; + this.groupBox2.Size = new System.Drawing.Size(469, 81); + this.groupBox2.TabIndex = 1; + this.groupBox2.TabStop = false; + this.groupBox2.Text = "使用帮助"; + // + // groupBox3 + // + this.groupBox3.Controls.Add(this.is_ms); + this.groupBox3.Controls.Add(this.comboBox1); + this.groupBox3.Controls.Add(this.label4); + this.groupBox3.Controls.Add(this.btn_start); + this.groupBox3.Location = new System.Drawing.Point(20, 268); + this.groupBox3.Name = "groupBox3"; + this.groupBox3.Size = new System.Drawing.Size(469, 79); + this.groupBox3.TabIndex = 2; + this.groupBox3.TabStop = false; + this.groupBox3.Text = "功能"; + // + // comboBox1 + // + this.comboBox1.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.comboBox1.FormattingEnabled = true; + this.comboBox1.Items.AddRange(new object[] { + "左键(Left)", + "右键(Right)"}); + this.comboBox1.Location = new System.Drawing.Point(223, 36); + this.comboBox1.Name = "comboBox1"; + this.comboBox1.Size = new System.Drawing.Size(133, 23); + this.comboBox1.TabIndex = 4; + // + // label4 + // + this.label4.AutoSize = true; + this.label4.ForeColor = System.Drawing.SystemColors.ActiveCaptionText; + this.label4.Location = new System.Drawing.Point(13, 40); + this.label4.Name = "label4"; + this.label4.Size = new System.Drawing.Size(122, 15); + this.label4.TabIndex = 3; + this.label4.Text = "间隔(毫秒/ms):"; + // + // is_ms + // + this.is_ms.Location = new System.Drawing.Point(135, 35); + this.is_ms.MaxLength = 10; + this.is_ms.Name = "is_ms"; + this.is_ms.Size = new System.Drawing.Size(72, 25); + this.is_ms.TabIndex = 1; + this.is_ms.Text = "1000"; + // + // btn_start + // + this.btn_start.Location = new System.Drawing.Point(377, 36); + this.btn_start.Name = "btn_start"; + this.btn_start.Size = new System.Drawing.Size(75, 23); + this.btn_start.TabIndex = 0; + this.btn_start.Text = "开始"; + this.btn_start.UseVisualStyleBackColor = true; + // + // btn_close + // + this.btn_close.AutoSize = true; + this.btn_close.Font = new System.Drawing.Font("宋体", 16.2F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.btn_close.Location = new System.Drawing.Point(452, 25); + this.btn_close.Name = "btn_close"; + this.btn_close.Size = new System.Drawing.Size(40, 28); + this.btn_close.TabIndex = 3; + this.btn_close.Text = "×"; + // + // title + // + this.title.AutoSize = true; + this.title.Enabled = false; + this.title.Font = new System.Drawing.Font("Bahnschrift Light", 16.2F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.title.ForeColor = System.Drawing.SystemColors.Desktop; + this.title.Location = new System.Drawing.Point(20, 25); + this.title.Name = "title"; + this.title.Size = new System.Drawing.Size(207, 34); + this.title.TabIndex = 4; + this.title.Text = "MouseClickTool"; + // + // textBox1 + // + this.textBox1.BackColor = System.Drawing.SystemColors.Window; + this.textBox1.Location = new System.Drawing.Point(6, 25); + this.textBox1.Multiline = true; + this.textBox1.Name = "textBox1"; + this.textBox1.ReadOnly = true; + this.textBox1.Size = new System.Drawing.Size(457, 50); + this.textBox1.TabIndex = 0; + this.textBox1.TabStop = false; + this.textBox1.Text = "设置每次点击的间隔,点击【开始】,将鼠标悬停在需要点击的区域上方,3秒后开始自动点击。"; + // + // btn_min + // + this.btn_min.AutoSize = true; + this.btn_min.Font = new System.Drawing.Font("宋体", 24F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.btn_min.Location = new System.Drawing.Point(409, 19); + this.btn_min.Name = "btn_min"; + this.btn_min.Size = new System.Drawing.Size(37, 40); + this.btn_min.TabIndex = 5; + this.btn_min.Text = "-"; + // + // main + // + this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 15F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.BackColor = System.Drawing.SystemColors.Window; + this.ClientSize = new System.Drawing.Size(509, 359); + this.Controls.Add(this.btn_min); + this.Controls.Add(this.title); + this.Controls.Add(this.btn_close); + this.Controls.Add(this.groupBox3); + this.Controls.Add(this.groupBox2); + this.Controls.Add(this.groupBox1); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None; + this.MaximizeBox = false; + this.Name = "main"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.Text = "MouseClickTool"; + this.groupBox1.ResumeLayout(false); + this.groupBox1.PerformLayout(); + this.groupBox2.ResumeLayout(false); + this.groupBox2.PerformLayout(); + this.groupBox3.ResumeLayout(false); + this.groupBox3.PerformLayout(); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.GroupBox groupBox1; + private System.Windows.Forms.Label url; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.GroupBox groupBox2; + private System.Windows.Forms.GroupBox groupBox3; + private System.Windows.Forms.Label label4; + private System.Windows.Forms.TextBox is_ms; + private System.Windows.Forms.Button btn_start; + private System.Windows.Forms.ComboBox comboBox1; + private System.Windows.Forms.Label btn_close; + private System.Windows.Forms.Label title; + private System.Windows.Forms.TextBox textBox1; + private System.Windows.Forms.Label btn_min; + } +} + diff --git a/main.cs b/main.cs new file mode 100644 index 0000000..6a3cf11 --- /dev/null +++ b/main.cs @@ -0,0 +1,192 @@ +using System; +using System.Drawing; +using System.Threading; +using System.Windows.Forms; +using System.Threading.Tasks; +using System.Runtime.InteropServices; +using System.Reflection; +using System.Diagnostics; +[assembly: AssemblyTitle("MouseClickTool")] +[assembly: AssemblyProduct("MouseClickTool")] +[assembly: AssemblyCopyright("Copyright © 2024 lalaki.cn")] +[assembly: AssemblyVersion("1.5.0.0")] +[assembly: AssemblyFileVersion("1.5.0.0")] +namespace MouseClickTool +{/// +/// 怎么简单怎么来了 +/// +/// + public partial class main : Form + { + [STAThread] + static void Main() + { + Application.EnableVisualStyles(); + Application.SetCompatibleTextRenderingDefault(false); + Application.Run(new main()); + } + //新方法:https://stackoverflow.com/questions/5094398/how-to-programmatically-mouse-move-click-right-click-and-keypress-etc-in-winfo + class MouseSimulator + { + [DllImport("user32.dll")] + static extern uint SendInput(uint nInputs, ref INPUT pInputs, int cbSize); + + [StructLayout(LayoutKind.Sequential)] + struct INPUT + { + public SendInputEventType type; + public MouseKeybdhardwareInputUnion mkhi; + } + + [StructLayout(LayoutKind.Explicit)] + struct MouseKeybdhardwareInputUnion + { + [FieldOffset(0)] + public MouseInputData mi; + } + + [Flags] + enum MouseEventFlags : uint + { + MOUSEEVENTF_LEFTDOWN = 0x0002, + MOUSEEVENTF_LEFTUP = 0x0004, + MOUSEEVENTF_RIGHTDOWN = 0x0008, + MOUSEEVENTF_RIGHTUP = 0x0010, + } + + [StructLayout(LayoutKind.Sequential)] + struct MouseInputData + { + public int dx; + public int dy; + public uint mouseData; + public MouseEventFlags dwFlags; + public uint time; + public IntPtr dwExtraInfo; + } + enum SendInputEventType : int + { + InputMouse + } + public static void ClickLeftMouseButton() + { + INPUT mouseDownInput = new INPUT(); + mouseDownInput.type = SendInputEventType.InputMouse; + mouseDownInput.mkhi.mi.dwFlags = MouseEventFlags.MOUSEEVENTF_LEFTDOWN; + SendInput(1, ref mouseDownInput, Marshal.SizeOf(new INPUT())); + + INPUT mouseUpInput = new INPUT(); + mouseUpInput.type = SendInputEventType.InputMouse; + mouseUpInput.mkhi.mi.dwFlags = MouseEventFlags.MOUSEEVENTF_LEFTUP; + SendInput(1, ref mouseUpInput, Marshal.SizeOf(new INPUT())); + } + public static void ClickRightMouseButton() + { + INPUT mouseDownInput = new INPUT(); + mouseDownInput.type = SendInputEventType.InputMouse; + mouseDownInput.mkhi.mi.dwFlags = MouseEventFlags.MOUSEEVENTF_RIGHTDOWN; + SendInput(1, ref mouseDownInput, Marshal.SizeOf(new INPUT())); + + INPUT mouseUpInput = new INPUT(); + mouseUpInput.type = SendInputEventType.InputMouse; + mouseUpInput.mkhi.mi.dwFlags = MouseEventFlags.MOUSEEVENTF_RIGHTUP; + SendInput(1, ref mouseUpInput, Marshal.SizeOf(new INPUT())); + } + } + const int waitSeconds = 4; + bool isRunning = false; + void SystemExit() + { + Hide(); + isRunning = false; + Environment.Exit(0); + } + delegate void testClick(); + public main() + { + InitializeComponent(); + this.Icon = SystemIcons.Application; + this.comboBox1.SelectedIndex = 0; + url.Click += (s, e) => Process.Start(url.Text); + btn_close.Click += (s, e) => SystemExit(); + btn_min.Click += (s, e) => WindowState = FormWindowState.Minimized; + btn_close.MouseHover += (s, e) => btn_close.ForeColor = Color.IndianRed; + btn_close.MouseLeave += (s, e) => btn_close.ForeColor = Control.DefaultForeColor; + btn_min.MouseHover += (s, e) => btn_min.ForeColor = Color.DodgerBlue; + btn_min.MouseLeave += (s, e) => btn_min.ForeColor = Control.DefaultForeColor; + Resize += (s, e) => + { + if (WindowState == FormWindowState.Maximized) WindowState = FormWindowState.Normal; + }; + MouseDown += (s, e) => + { + if (e.Button == MouseButtons.Left) + { + Tag = e.Location; + } + }; + MouseMove += (s, e) => + { + if (e.Button == MouseButtons.Left && Tag is Point offset) + { + Cursor = Cursors.SizeAll; + Point newLocation = this.PointToScreen(e.Location); + newLocation.Offset(-offset.X, -offset.Y); + this.Location = newLocation; + } + }; + MouseUp += (s, e) => Cursor = Cursors.Default; + Paint += (s, e) => + { + var g = e.Graphics; + using (var pen = new Pen(Color.HotPink, 7f)) + g.DrawLine(pen, Width, 0, 0, 0); + using (var border = new Pen(Color.FromArgb(55, 0, 0, 0))) + g.DrawRectangle(border, 0, 0, Width - 1, Height - 1); + }; + btn_start.Click += (s, e) => + { + if (isRunning) + { + SystemExit(); + return; + } + if (int.TryParse(is_ms.Text, out int result) && result > 0) + { + isRunning = true; + is_ms.ReadOnly = true; + Task.Factory.StartNew(async () => + { + await Task.Run(async () => + { + var startText = btn_start.Text; + for (int i = 1; i < waitSeconds; i++) + { + btn_start.Text = string.Format("{0}({1})", startText, waitSeconds - i); + await Task.Delay(1000); + } + }); + btn_start.Text = "停止"; + testClick mouseClick = new testClick(MouseSimulator.ClickRightMouseButton); + if (this.comboBox1.SelectedIndex == 0) + { + mouseClick = new testClick(MouseSimulator.ClickLeftMouseButton); + } + while (isRunning) + { + await Task.Run(async () => + { + mouseClick.Invoke(); + await Task.Delay(result); + }); + } + }); + } + else + { + MessageBox.Show("输入的数字不正确,必须是正整数", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + }; + } + } +} \ No newline at end of file