у меня есть очень удобный скрипт с помощью которого можно управлять положением и размером окна powershell. Это очень удобно и поэтому я этот скрипт очень часто использую. Но тут мне захотелось таким же
макаром поуправлять и другими окнами. Хочется иметь возможность задать положение и размеры окна плеера mpc-hc
param(
[int]$X = 0, # X координата - положение верхнего левого угла
[int]$Y = 0, # Y координата - положение верхнего левого угла
[int]$W = 0, # Width - Ширина окна
[int]$H = 0 # Hight - Высота окна
)
BEGIN {
$signature = @'
[DllImport("user32.dll")]
public static extern bool MoveWindow(
IntPtr hWnd,
int X,
int Y,
int nWidth,
int nHeight,
bool bRepaint);
[DllImport("user32.dll")]
public static extern IntPtr GetForegroundWindow();
[DllImport("user32.dll")]
public static extern bool GetWindowRect(
HandleRef hWnd,
out RECT lpRect);
public struct RECT
{
public int Left; // x position of upper-left corner
public int Top; // y position of upper-left corner
public int Right; // x position of lower-right corner
public int Bottom; // y position of lower-right corner
}
'@
Add-Type -MemberDefinition $signature -Name Wutils -Namespace WindowsUtils
}
PROCESS{
$phandle = [WindowsUtils.Wutils]::GetForegroundWindow()
$o = New-Object -TypeName System.Object
$href = New-Object -TypeName System.RunTime.InteropServices.HandleRef -ArgumentList $o, $phandle
$rct = New-Object WindowsUtils.Wutils+RECT
[WindowsUtils.Wutils]::GetWindowRect($href, [ref]$rct) | Out-Null
if ( $W -eq 0 ) { $width = $rct.Right - $rct.Left } Else { $width = $W }
if ( $H -eq 0 ) { $height = $rct.Bottom - $rct.Top } Else { $height = $H }
[WindowsUtils.Wutils]::MoveWindow($phandle, $X, $Y, $width, $height, $true) | Out-Null
}
Подскажите на что можно поменять строчку кода
$phandle = [WindowsUtils.Wutils]::GetForegroundWindow()
Что бы получить указать на единственный mpc-hc запущенный на компьютере.
Ну и наверняка мне захочется управлять окнами разных программ firefox и т.д.