PowerShell脚本实现自动化鼠标点击操作
声明
-
本脚本仅以开发者学习交流使用,请勿使用脚本从事非法活动。
-
本脚本不包含任何侵犯他人隐私、网络攻击、传播恶意软件等操作。
脚本功能描述
基于windows操作系统运行库实现鼠标自动移动至指定坐标并点击功能。
脚本下载
https://files.cnblogs.com/files/leizia/test.zip
准备工作
windows系统电脑 下载脚本到本地到任意文件夹(注意:文件夹名称不要带'( )'括号这种特殊字符,建议目录名为任意英文) 定位点击点位坐标(这里推荐使用微软截图工具 Snipaste)
打开PowerShell控制台
1、测试本机系统是否可以使用PowerShell(本机测试windows10家庭版)
Windows键+x
显示如下说明可以使用PowerShell
2、windows+x
键后点击Windows PowerShell
或Windows PowerShell
(管理员),弹出如下控制台:
切换脚本文件路径
1、保存脚本文件到目录后,查看目录位置,如下:
2、在PowerShell控制台执行命令:
cd "C:\Users\xxx\Desktop\test"
双引号内是刚刚复制的目录路径地址,回车可以看到已经切换到脚本目录下
查看脚本依赖运行库
1、执行脚本查看系统是否有脚本依赖运行库System.Windows.Forms
命令:
.\test-windows-forms.ps1
桌面弹出如下弹框说明系统有脚本依赖运行库:
执行异常情况
如果控制台提示如下则说明由于 PowerShell 的执行策略阻止了脚本的运行。
控制台输入命令:
Set-ExecutionPolicy RemoteSigned
- 说明:
RemoteSigned
:允许运行本地脚本
根据提示输入:Y
再次执行下面命令,如果有弹框说明没有其他问题可以执行脚本。
.\test-windows-forms.ps1
运行应用示例
说明:
这里以Steam商店操作为例,打开steam,进入库主页。
需求分析
1、选择游戏"鬼谷八荒",查看游戏详情。
2、5秒后选择游戏"巫师3",查看游戏详情。
3、10秒后选择游戏"森林",查看游戏详情。
操作点位获取
推荐使用微软截图工具Snipaste,使用F1进行截图查看全屏选择的点位坐标,如下:
使用截图获取需要操作的像素点位坐标。
修改脚本坐标位置
注意:修改完脚本要保存:ctrl + s
运行脚本
填入坐标后,保存文件,进入PowerShell控制台执行命令:
.\clicker.ps1
Clicking at (121, 248) - 1 / 1 # Clicking at (121, 248) 表示执行的坐标位置 # - 1 / 1 表示执行的第几次与可执行的总次数,这里测试总数次数1次,第一次执行
至此脚本可以自动化自行鼠标自动点击操作。
脚本源码及说明
源码
test-windows-forms.ps1
# Save this script as test-windows-forms.ps1 try { Add-Type -AssemblyName System.Windows.Forms [System.Windows.Forms.MessageBox]::Show("System.Windows.Forms is available.") } catch { Write-Output "System.Windows.Forms is not available." }
clicker.ps1
Add-Type -TypeDefinition @" using System; using System.Runtime.InteropServices; public class Mouse { [DllImport("user32.dll", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)] public static extern void mouse_event(long dwFlags, long dx, long dy, long cButtons, long dwExtraInfo); public const int MOUSEEVENTF_MOVE = 0x0001; public const int MOUSEEVENTF_LEFTDOWN = 0x0002; public const int MOUSEEVENTF_LEFTUP = 0x0004; public const int MOUSEEVENTF_RIGHTDOWN = 0x0008; public const int MOUSEEVENTF_RIGHTUP = 0x0010; public const int MOUSEEVENTF_ABSOLUTE = 0x8000; } "@ function Click-AtPosition($x, $y) { # Move the mouse to the specified position [System.Windows.Forms.Cursor]::Position = New-Object System.Drawing.Point($x, $y) # Perform the click [Mouse]::mouse_event([Mouse]::MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0) Start-Sleep -Milliseconds 100 [Mouse]::mouse_event([Mouse]::MOUSEEVENTF_LEFTUP, 0, 0, 0, 0) } # 定义点击位置和间隔时间的数组 $clickPositions = @( @{ x = 121; y = 248; interval = 5 }, @{ x = 101; y = 426; interval = 10 }, @{ x = 101; y = 101; interval = 1 }, @{ x = 122; y = 741; interval = 10 } ) # 定义总点击次数可以自定义设置 $totalClicks = 1 for ($i = 0; $i -lt $totalClicks; $i++) { foreach ($pos in $clickPositions) { Write-Output "Clicking at ($($pos.x), $($pos.y)) - $($i + 1) / $totalClicks" Click-AtPosition -x $pos.x -y $pos.y Start-Sleep -Seconds $pos.interval } }
脚本配置
上面脚本中我们主要修改clicker.ps1文件中坐标内容及延时时间,还有就是总执行次数了。
如果需要对某个坐标进行多次点击,在添加坐标时就可以一个坐标多次设置且时间设置为1秒,如下:
# 定义点击位置和间隔时间的数组 $clickPositions = @( @{ x = 121; y = 248; interval = 5 }, @{ x = 101; y = 426; interval = 10 }, @{ x = 101; y = 101; interval = 1 }, #这里就是要对坐标101,101进行间隔1秒点击3次 @{ x = 101; y = 101; interval = 1 }, #这里就是要对坐标101,101进行间隔1秒点击3次 @{ x = 101; y = 101; interval = 1 }, #这里就是要对坐标101,101进行间隔1秒点击3次 @{ x = 122; y = 741; interval = 10 } )
这样设置意思要对每个坐标设置执行99999次操作,是每个坐标操作。
# 定义总点击次数可以自定义设置 $totalClicks = 99999
注意
PowerShell 修改了执行策略,在不需要运行脚本,建议在PowerShell控制台执行命令:
Set-ExecutionPolicy Restricted
关闭脚本执行。
- 执行策略说明:
Restricted: 不允许任何 PowerShell 脚本运行。
AllSigned: 只允许运行由受信任发布者签名的脚本。
RemoteSigned: 允许运行本地脚本,下载的脚本必须由受信任发布者签名。
Unrestricted: 允许所有脚本运行,但在运行从互联网下载的脚本时会有警告。
本文来自博客园,作者:Lz_蚂蚱,转载请注明原文链接:https://www.cnblogs.com/leizia/p/18349975
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步