我从某个网站复制了这段PowerShell代码,它可以显示鼠标当前位置:
[Reflection.Assembly]::LoadWithPartialName('System.Windows.Forms') | Out-Null
$control = [System.Windows.Forms.Control]
$mouseX = $control::MousePosition.X
$mouseY = $control::MousePosition.Y
Write-Host 'MousePosition:' $mouseX $mouseY
我查看了System.Windows.Forms.Control类文档,发现有几个与MousePosition类似的属性(如Bottom、Bounds、Left、Location、Right或Top),它们包含关于像素中的“控件”的度量,因此我尝试以同样的方式报告Location属性的值:
[Reflection.Assembly]::LoadWithPartialName('System.Windows.Forms') | Out-Null
$control = [System.Windows.Forms.Control]
$mouseX = $control::MousePosition.X
$mouseY = $control::MousePosition.Y
Write-Host 'MousePosition:' $mouseX $mouseY
$locationX = $control::Location.X
$locationY = $control::Location.Y
Write-Host 'Location:' $locationX $locationY
然而,这段代码无法正常工作:没有报错,但位置值不会显示:
MousePosition: 368 431
Location:
为什么可以正确访问MousePosition属性,但无法访问Location属性?
此代码的目的是获取PowerShell脚本运行的cmd.exe窗口的尺寸和像素位置。在PowerShell中获取这些值的正确方法是什么?
MousePosition
是静态的,而Location
不是(因为它是控件实例化后的属性)。如果想获取控件位置,需要使用窗口句柄实例化一个Control
对象。 - Mathias R. Jessen