获取键盘光标位置-PowerShell

wz3gfoph  于 2022-11-10  发布在  Shell
关注(0)|答案(1)|浏览(353)

如何使用PowerShell获取键盘光标的位置??
我的目标是动态点击这些方块中的一个。我不能对PowerShell的sendkeys使用Enter或空格键,否则我早就完成了。LOL
例如,这是可以找到鼠标准确位置的PowerShell代码:

Start-Sleep 5
Add-Type -AssemblyName System.Windows.Forms

$X = [System.Windows.Forms.Cursor]::Position.X
$Y = [System.Windows.Forms.Cursor]::Position.Y

Write-Output "X: $X | Y: $Y"

我也知道如何用鼠标左键点击:

Add-Type -AssemblyName System.Windows.Forms
Add-Type -MemberDefinition '[DllImport("user32.dll")] public static extern void mouse_event(int flags, int dx, int dy, int cButtons, int info);' -Name U32 -Namespace W;

[Windows.Forms.Cursor]::Position = "1254,564" #This is a position on your screen at the bottom right.
[W.U32]::mouse_event(6,0,0,0,0); #this is the actual mouse click event.

所以我:
1.知道如何获得鼠标的位置
1.知道如何使用鼠标点击屏幕
但我想知道如何:获取高亮显示或选项卡式区域的位置(最有可能是屏幕上的键盘光标位置)。-我的想法是,如果我可以使用PowerShell切换到我想要的位置,那么我只需要使用鼠标到达相同的位置,这样我就可以双击,而不是使用键盘上的Enter或空格键(我希望可以使用,但这个应用程序很奇怪)

oymdgrw7

oymdgrw71#

我想出来了,但它需要Autohotkey的ImageSearch才能完成工作。
在这里测试我使用的代码。我以等待5秒的PowerShell开始,这样我就可以转到我正在测试的屏幕。然后我让它在测试窗口中模拟输入,这样我就可以看到光标突出显示其中一个视图(在本例中是一个称为“Internet Access”的视图)。然后,我使用自动热键尝试根据我拍摄的快照图像找到突出显示的光标。一旦它找到它,它就会在屏幕上的那个位置上双击。
这需要您拍摄屏幕快照,并准确地裁剪鼠标要移动到的位置。
这需要你知道屏幕的分辨率大小。
以下是代码:
Test.ps1

Start-Sleep 6
$wshell = New-Object -ComObject wscript.shell;
$wshell.SendKeys("Internet Access")
Start-Sleep 1
.\MyScript.ahk

MyScript.ahk

ImageSearch, X, Y, 0, 0, 1920, 1080, croppedimage.png
MouseMove,%x%,%y%
Click
Click

帮助我的链接:来自Autohotkey的图像搜索文档:https://www.autohotkey.com/docs/commands/ImageSearch.htm
YouTube关于如何使用ImagesArch的视频:https://www.youtube.com/watch?v=oAkivSDrktE

相关问题