【发布时间】:2016-04-16 16:04:46
【问题描述】:
我从某个站点复制了这个 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 class documentation 并发现了几个属性是 MousePosition 的“姐妹”(如底部、边界、左侧、位置、右侧或顶部),其中包含有关“控制”的度量(以像素为单位),所以我尝试也可以通过这种方式报告Location property 值:
[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
但是此代码不起作用:未报告错误,但未显示 Location 值:
MousePosition: 368 431
Location:
为什么可以正确访问 MousePosition 属性,但不能正确访问 Location?
此代码的目的是获取运行 PowerShell 脚本的 cmd.exe 窗口的尺寸和位置(以像素为单位)。 在 PowerShell 中获取这些值的正确方法是什么?
【问题讨论】:
-
MousePosition是静态的,Location不是(因为它是每个控件实例)。如果你想要它的位置,你必须从窗口句柄实例化一个Control对象
标签: .net winforms powershell