将powershell控制台窗口移动到屏幕左侧的最佳方法是什么?

时间:2017-03-27 10:30:50

标签: powershell

尝试使用PowerShell脚本将当前活动的PowerShell窗口移动到屏幕左侧。

我找到this function,但它并没有真正附带任何例子。

3 个答案:

答案 0 :(得分:1)

有趣且有趣的问题。

如果你想要移动窗口,你需要知道它的变化。对于控制台,您可以通过kernel32.dll中的GetConsoleWindow函数来完成。

检查此脚本,它会将powershell控制台移动到左上角,大小为500,500。

onClick

如果你知道窗口的hwnd,你可以用这个窗口做很多事情。您可以在此处找到所有功能:https://msdn.microsoft.com/en-us/library/windows/desktop/ff468919(v=vs.85).aspx

但是这个脚本只使用真正的PowerShell控制台,如果你从Powershell ISE启动它,hwnd将为0,因为Powershell ISE没有真正的控制台。

答案 1 :(得分:1)

为您提供Set-Window的完整示例,该示例模仿手册 Window + 左箭头

在我的1920 * 1200屏幕上, Window + Left-Arrow 之后的窗口尺寸为:

#  Left    Top  Width Heigth
#    -7      0    974   1207

因此,您需要首先获得屏幕尺寸,对于主显示器,这样做:

Add-Type -AssemblyName System.Windows.Forms
$ScreenSize = [System.Windows.Forms.SystemInformation]::PrimaryMonitorSize

$MyLeft  = -7
$MyTop   = 0
$MyWidth = $ScreenSize.Width/2+2*7
$MyHeight= $ScreenSize.Height +7

"Left:{0}  Top:{1}  Width:{2}  Height:{3}" -f $MyLeft,$MyTop,$MyWidth,$MyHeight
Get-Process powershell | Set-Window -X $MyLeft -Y $MyTop -Width $MyWidth -Height $MyHeight

答案 2 :(得分:0)

另一种移动当前豪华流程窗口的方法:

$MethodDefinition = @'
[DllImport("user32.dll", CharSet = CharSet.Unicode)]
public static extern bool SetWindowPos(IntPtr hWnd, int hWndInsertAfter, int X, int Y, int cx, int cy, int wFlags);
'@
$User32 = Add-Type -MemberDefinition $MethodDefinition -Name 'User32' -Namespace 'Win32' -PassThru

$CurrentProcess = Get-Process -id $PID
$User32::SetWindowPos($CurrentProcess.MainWindowHandle, 0x1, 0, 0, 0, 0, 0x0040 -bor 0x0020 -bor 0x0001)