PowerShell脚本实现自动化鼠标点击操作

声明

  • 本脚本仅以开发者学习交流使用,请勿使用脚本从事非法活动。

  • 本脚本不包含任何侵犯他人隐私、网络攻击、传播恶意软件等操作。

脚本功能描述

基于windows操作系统运行库实现鼠标自动移动至指定坐标并点击功能。

脚本下载

https://files.cnblogs.com/files/leizia/test.zip

准备工作

windows系统电脑
下载脚本到本地到任意文件夹(注意:文件夹名称不要带'( )'括号这种特殊字符,建议目录名为任意英文)
定位点击点位坐标(这里推荐使用微软截图工具 Snipaste)

打开PowerShell控制台

1、测试本机系统是否可以使用PowerShell(本机测试windows10家庭版)

Windows键+x

显示如下说明可以使用PowerShell

2、windows+x键后点击Windows PowerShellWindows 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: 允许所有脚本运行,但在运行从互联网下载的脚本时会有警告。

posted @   Lz_蚂蚱  阅读(1530)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起