Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Add-Type -AssemblyName System.Windows.Forms
- Add-Type @"
- using System;
- using System.Collections;
- using System.Collections.Generic;
- using System.Runtime.InteropServices;
- using System.Text;
- public struct RECT
- {
- public int left;
- public int top;
- public int right;
- public int bottom;
- }
- public class pInvoke
- {
- [DllImport("user32.dll", SetLastError = true)]
- public static extern bool MoveWindow(IntPtr hWnd, int X, int Y, int nWidth, int nHeight, bool bRepaint);
- [DllImport("user32.dll", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall, ExactSpelling = true, SetLastError = true)]
- public static extern bool GetWindowRect(IntPtr hWnd, ref RECT rect);
- }
- "@
- function Move-Window([System.IntPtr]$WindowHandle, [switch]$Top, [switch]$Bottom, [switch]$Left, [switch]$Right, [int]$width, [int]$height) {
- # get the window bounds
- $rect = New-Object RECT
- [pInvoke]::GetWindowRect($WindowHandle, [ref]$rect)
- # get which screen the app has been spawned into
- $activeScreen = [System.Windows.Forms.Screen]::FromHandle($WindowHandle).Bounds
- if($width){}
- else{
- $width = ($activeScreen.Right)/2
- }
- if($height){}else{
- $height = ($activeScreen.Bottom)/2
- }
- if ($Top) { # if top used, snap to top of screen
- $posY = $activeScreen.Top
- } elseif ($Bottom) { # if bottom used, snap to bottom of screen
- $posY = $activeScreen.Bottom - $height
- $height = $height - 35
- } else { # if neither, snap to current position of the window
- $posY = $rect.top
- }
- if ($Left) { # if left used, snap to left of screen
- $posX = $activeScreen.Left
- } elseif ($Right) { # if right used, snap to right of screen
- $posX = $activeScreen.Right - $width
- } else { # if neither, snap to current position of the window
- $posX = $rect.left
- }
- [pInvoke]::MoveWindow($WindowHandle, $posX, $posY, $width, $height, $true)
- }
- # spawn the window and return the window object
- $app1 = Start-Process "C:\Python27\Scripts\rpyc_classic.py" -PassThru
- $app2 = Start-Process .\pingMgmt.bat -PassThru
- $app3 = Start-Process .\pingOutbound.bat -PassThru
- sleep -Milliseconds 300
- Move-Window -WindowHandle $app1.MainWindowHandle -Top -Left -width 1500
- Move-Window -WindowHandle $app2.MainWindowHandle -Bottom -Left
- Move-Window -WindowHandle $app3.MainWindowHandle -Bottom -Right
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement