mirror of
https://github.com/ChrisTitusTech/winutil.git
synced 2025-05-10 00:02:09 +00:00
Remove the need for inline C# to get the window dimensions
This commit is contained in:
parent
698f1644c3
commit
5e568e1274
@ -191,7 +191,7 @@ Invoke-WPFRunspace -ScriptBlock {
|
|||||||
$sync.ConfigLoaded = $True
|
$sync.ConfigLoaded = $True
|
||||||
}
|
}
|
||||||
finally{
|
finally{
|
||||||
$ProgressPreference = "Continue"
|
$ProgressPreference = $oldProgressPreference
|
||||||
}
|
}
|
||||||
|
|
||||||
} | Out-Null
|
} | Out-Null
|
||||||
@ -320,55 +320,6 @@ $sync["Form"].Add_Deactivated({
|
|||||||
})
|
})
|
||||||
|
|
||||||
$sync["Form"].Add_ContentRendered({
|
$sync["Form"].Add_ContentRendered({
|
||||||
|
|
||||||
try {
|
|
||||||
[void][Window]
|
|
||||||
} catch {
|
|
||||||
Add-Type @"
|
|
||||||
using System;
|
|
||||||
using System.Runtime.InteropServices;
|
|
||||||
public class Window {
|
|
||||||
[DllImport("user32.dll")]
|
|
||||||
public static extern IntPtr SendMessage(IntPtr hWnd, uint Msg, IntPtr wParam, IntPtr lParam);
|
|
||||||
|
|
||||||
[DllImport("user32.dll")]
|
|
||||||
[return: MarshalAs(UnmanagedType.Bool)]
|
|
||||||
public static extern bool GetWindowRect(IntPtr hWnd, out RECT lpRect);
|
|
||||||
|
|
||||||
[DllImport("user32.dll")]
|
|
||||||
[return: MarshalAs(UnmanagedType.Bool)]
|
|
||||||
public static extern bool MoveWindow(IntPtr handle, int x, int y, int width, int height, bool redraw);
|
|
||||||
|
|
||||||
[DllImport("user32.dll")]
|
|
||||||
public static extern int GetSystemMetrics(int nIndex);
|
|
||||||
};
|
|
||||||
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
|
|
||||||
}
|
|
||||||
"@
|
|
||||||
}
|
|
||||||
|
|
||||||
foreach ($proc in (Get-Process).where{ $_.MainWindowTitle -and $_.MainWindowTitle -like "*titus*" }) {
|
|
||||||
# Check if the process's MainWindowHandle is valid
|
|
||||||
if ($proc.MainWindowHandle -ne [System.IntPtr]::Zero) {
|
|
||||||
Write-Debug "MainWindowHandle: $($proc.Id) $($proc.MainWindowTitle) $($proc.MainWindowHandle)"
|
|
||||||
$windowHandle = $proc.MainWindowHandle
|
|
||||||
} else {
|
|
||||||
Write-Warning "Process found, but no MainWindowHandle: $($proc.Id) $($proc.MainWindowTitle)"
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
$rect = New-Object RECT
|
|
||||||
[Window]::GetWindowRect($windowHandle, [ref]$rect)
|
|
||||||
$width = $rect.Right - $rect.Left
|
|
||||||
$height = $rect.Bottom - $rect.Top
|
|
||||||
|
|
||||||
Write-Debug "UpperLeft:$($rect.Left),$($rect.Top) LowerBottom:$($rect.Right),$($rect.Bottom). Width:$($width) Height:$($height)"
|
|
||||||
|
|
||||||
# Load the Windows Forms assembly
|
# Load the Windows Forms assembly
|
||||||
Add-Type -AssemblyName System.Windows.Forms
|
Add-Type -AssemblyName System.Windows.Forms
|
||||||
$primaryScreen = [System.Windows.Forms.Screen]::PrimaryScreen
|
$primaryScreen = [System.Windows.Forms.Screen]::PrimaryScreen
|
||||||
@ -383,9 +334,12 @@ Add-Type @"
|
|||||||
Write-Debug "Primary Monitor Height: $screenHeight pixels"
|
Write-Debug "Primary Monitor Height: $screenHeight pixels"
|
||||||
|
|
||||||
# Compare with the primary monitor size
|
# Compare with the primary monitor size
|
||||||
if ($width -gt $screenWidth -or $height -gt $screenHeight) {
|
if ($sync.Form.ActualWidth -gt $screenWidth -or $sync.Form.ActualHeight -gt $screenHeight) {
|
||||||
Write-Debug "The specified width and/or height is greater than the primary monitor size."
|
Write-Debug "The specified width and/or height is greater than the primary monitor size."
|
||||||
[void][Window]::MoveWindow($windowHandle, 0, 0, $screenWidth, $screenHeight, $True)
|
$sync.Form.Left = 0
|
||||||
|
$sync.Form.Top = 0
|
||||||
|
$sync.Form.Width = $screenWidth
|
||||||
|
$sync.Form.Height = $screenHeight
|
||||||
} else {
|
} else {
|
||||||
Write-Debug "The specified width and height are within the primary monitor size limits."
|
Write-Debug "The specified width and height are within the primary monitor size limits."
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user