我的一些任务是非常重复的,有时我必须点击同一个模式一个小时。这可以很容易地通过鼠标记录器完成,但不幸的是,我无法下载任何东西.我有PowerShell预装在我的电脑上,所以这可能是一个选项(我已经成功地使用这个在过去的目录).我的问题是如何制作一个PowerShell鼠标记录器(然后在循环中自动化)或使用其他预装软件。
gkl3eglg1#
假设你寻找一个鼠标记录器(又名鼠标宏,或类似)。相比之下,我用Windows PowerShell伊势实现了你所寻求的,它不需要D/L和安装的麻烦:在PowerShell伊势中打开一个空白项目,并添加以下代码...
1.通过导入几个系统程序集来设置环境-只需复制这两个
[void] [System.Reflection.Assembly]::LoadWithPartialName("System.Drawing") [void] [System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")
1.通过调用user32.dll并调用其中的鼠标点击事件来创建一个数组。注意:如果你想发送鼠标点击事件,这是很重要的。没有它,你的鼠标将只是不断地改变它的位置,但不会点击任何地方。(更多信息可以在here中找到。)
$signature=@' [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); '@
1.你现在必须添加一个类型的上述所谓的鼠标事件数组列表。
$SendMouseClick = Add-Type -memberDefinition $signature -name "Win32MouseEventNew" -namespace Win32Functions -passThru
您的环境已准备就绪。
1.通过输入下面的命令获得鼠标/光标在屏幕上的像素位置。
$X = [System.Windows.Forms.Cursor]::Position.X $Y = [System.Windows.Forms.Cursor]::Position.Y Write-Output "X: $X | Y: $Y"
在上面的命令中,你只是得到光标的X & Y位置。请注意,你可能需要多次执行这个步骤来得到鼠标像素,就像你想让鼠标光标去点击的地方一样。1.一旦你有你的所有位置记录下来,你想执行鼠标点击,现在是时候设置它了。
$x = 86 $y = 172 [System.Windows.Forms.Cursor]::Position = New-Object System.Drawing.Point($x, $y) sleep -Seconds 01 $SendMouseClick::mouse_event(0x00000002, 0, 0, 0, 0); $SendMouseClick::mouse_event(0x00000004, 0, 0, 0, 0);
现在,一旦你有所有的$X & $Y位置准备好,你需要执行点击,编辑并重复上述代码在PowerShell伊势.每一次,替换$X & $Y值与您希望悬停或点击的值.$SendMouseClick::mouse_event(0x00000002, 0, 0, 0, 0);将执行左键单击向下。$SendMouseClick::mouse_event(0x00000004, 0, 0, 0, 0);将执行左击向上。所以如果你想执行双击,只需调用两次,就像这样。
$SendMouseClick::mouse_event(0x00000002, 0, 0, 0, 0);
$SendMouseClick::mouse_event(0x00000004, 0, 0, 0, 0);
$SendMouseClick::mouse_event(0x00000002, 0, 0, 0, 0); $SendMouseClick::mouse_event(0x00000004, 0, 0, 0, 0); $SendMouseClick::mouse_event(0x00000002, 0, 0, 0, 0); $SendMouseClick::mouse_event(0x00000004, 0, 0, 0, 0);
这听起来可能是一个过时的过程,但它确实可以完成这项工作。我发现它在没有其他第三方工具可供我使用的情况下非常有用。正如您指出的那样,PowerShell预装。
1条答案
按热度按时间gkl3eglg1#
假设你寻找一个鼠标记录器(又名鼠标宏,或类似)。
相比之下,我用Windows PowerShell伊势实现了你所寻求的,它不需要D/L和安装的麻烦:在PowerShell伊势中打开一个空白项目,并添加以下代码...
首先,您需要设置环境
1.通过导入几个系统程序集来设置环境-只需复制这两个
1.通过调用user32.dll并调用其中的鼠标点击事件来创建一个数组。注意:如果你想发送鼠标点击事件,这是很重要的。没有它,你的鼠标将只是不断地改变它的位置,但不会点击任何地方。(更多信息可以在here中找到。)
1.你现在必须添加一个类型的上述所谓的鼠标事件数组列表。
您的环境已准备就绪。
现在,如何使用
1.通过输入下面的命令获得鼠标/光标在屏幕上的像素位置。
在上面的命令中,你只是得到光标的X & Y位置。请注意,你可能需要多次执行这个步骤来得到鼠标像素,就像你想让鼠标光标去点击的地方一样。
1.一旦你有你的所有位置记录下来,你想执行鼠标点击,现在是时候设置它了。
现在,一旦你有所有的$X & $Y位置准备好,你需要执行点击,编辑并重复上述代码在PowerShell伊势.每一次,替换$X & $Y值与您希望悬停或点击的值.
$SendMouseClick::mouse_event(0x00000002, 0, 0, 0, 0);
将执行左键单击向下。$SendMouseClick::mouse_event(0x00000004, 0, 0, 0, 0);
将执行左击向上。所以如果你想执行双击,只需调用两次,就像这样。
这听起来可能是一个过时的过程,但它确实可以完成这项工作。我发现它在没有其他第三方工具可供我使用的情况下非常有用。正如您指出的那样,PowerShell预装。