You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在PowerShell ISE中实现鼠标点击自动化?求从零开始的步骤指导

PowerShell ISE 实现鼠标点击自动化的完整步骤

一、准备工作

  • 使用PowerShell ISE 5.1及以上版本(系统自带组件兼容性更好)
  • 无需额外安装第三方模块,依赖系统原生组件即可

二、方法1:基于Windows Forms实现(易调试)

利用.NET Windows Forms库模拟鼠标操作,步骤清晰,适合新手。

步骤1:加载所需.NET程序集

在PowerShell ISE中执行以下代码引入组件:

Add-Type -AssemblyName System.Windows.Forms
Add-Type -AssemblyName System.Drawing

步骤2:获取目标点击坐标(可选)

先定位目标位置的坐标,移动鼠标到目标点后按回车:

Write-Host "移动鼠标到目标位置后按回车..."
Read-Host
$currentPos = [System.Windows.Forms.Cursor]::Position
Write-Host "目标坐标:X=$($currentPos.X), Y=$($currentPos.Y)"

步骤3:模拟鼠标点击

替换$targetX和$targetY为实际坐标,执行代码完成点击:

# 设置目标坐标
$targetX = 100
$targetY = 200

# 移动鼠标到目标位置
[System.Windows.Forms.Cursor]::Position = New-Object System.Drawing.Point($targetX, $targetY)

# 模拟完整左键点击(按下+释放)
$mouseArgs = [System.Windows.Forms.MouseEventArgs]::new([System.Windows.Forms.MouseButtons]::Left, 1, $targetX, $targetY, 0)
[System.Windows.Forms.Control]::InvokeOnClick([System.Windows.Forms.Control]::new(), $mouseArgs)

右键点击只需将[System.Windows.Forms.MouseButtons]::Left替换为[System.Windows.Forms.MouseButtons]::Right。

三、方法2:调用user32.dll系统API(兼容性更强)

绕过.NET封装,直接调用系统底层API,适合SendKeys失效的场景。

步骤1:声明API函数

在PowerShell ISE中执行以下代码定义所需函数:

Add-Type @"
using System.Runtime.InteropServices;
public class MouseSim {
    [DllImport("user32.dll")]
    public static extern void mouse_event(uint dwFlags, uint dx, uint dy, uint cButtons, uint dwExtraInfo);
    
    public const uint MOUSEEVENTF_LEFTDOWN = 0x02;
    public const uint MOUSEEVENTF_LEFTUP = 0x04;
    public const uint MOUSEEVENTF_RIGHTDOWN = 0x08;
    public const uint MOUSEEVENTF_RIGHTUP = 0x10;
}
"@

Add-Type @"
using System.Runtime.InteropServices;
public class MouseMove {
    [DllImport("user32.dll")]
    public static extern bool SetCursorPos(int X, int Y);
}
"@

步骤2:移动鼠标到目标位置(可选)

执行代码将鼠标移至目标坐标:

[MouseMove]::SetCursorPos(100, 200)

步骤3:模拟鼠标点击

执行以下代码完成左键点击:

# 左键按下
[MouseSim]::mouse_event([MouseSim]::MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0)
# 模拟真实点击的间隔(可调整毫秒数)
Start-Sleep -Milliseconds 100
# 左键释放
[MouseSim]::mouse_event([MouseSim]::MOUSEEVENTF_LEFTUP, 0, 0, 0, 0)

右键点击替换为MOUSEEVENTF_RIGHTDOWN和MOUSEEVENTF_RIGHTUP即可。

四、常见问题排查

  • SendKeys失效:该方法对高权限程序、全屏应用兼容性差,优先使用上述两种方法
  • 坐标错误:用步骤中的坐标获取工具确认目标位置,注意屏幕分辨率影响
  • 权限问题:若目标程序以管理员身份运行,需同样以管理员权限启动PowerShell ISE

内容的提问来源于stack exchange,提问作者upasna singla

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 06:43:29