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

5anewei6  于 2023-06-29  发布在  Shell
关注(0)|答案(3)|浏览(238)

尝试使用PowerShell脚本将当前活动的PowerShell窗口移动到屏幕左侧。
我找到了this function,但它并没有提供任何示例。

hfyxw5xn

hfyxw5xn1#

有趣的问题。
如果你想移动窗口,你需要知道它的窗口句柄hWnd。控制台可以使用kernel32.dll中的GetConsoleWindow函数。
这个脚本会将powershell控制台移动到 * 左上角 *,大小为(500, 500)

Add-Type -Name Window -Namespace Console -MemberDefinition '
[DllImport("Kernel32.dll")] 
public static extern IntPtr GetConsoleWindow();
[DllImport("user32.dll")]
public static extern bool MoveWindow(IntPtr hWnd, int X, int Y, int W, int H); '

$consoleHWND = [Console.Window]::GetConsoleWindow();
$consoleHWND
[Console.Window]::MoveWindow($consoleHWND,0,0,500,500);

如果你知道窗口的属性,你可以用它做很多事情。您可以找到所有函数here
但是这个脚本只能在真实的的powershell * 控制台 * 上工作。如果您将从Powershell ISE启动它,hWnd将是Zero 0,因为Powershell伊势中没有真实的控制台。

tzdcorbm

tzdcorbm2#

给予你一个完整的例子,Set-Window模仿手动窗口+左箭头。
在我的1920*1200屏幕上,窗口+左箭头后的窗口尺寸是:

#  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
rkue9o1l

rkue9o1l3#

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

$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)

相关问题