PowerShell can use UIAutomation calls to find out useful UI information about any process. You can find out whether a process accepts keyboard input, whether it is currently visible (and what its window dimensions are), and whether it is a native Win32 application or uses WPF–among other things.
Here is an example that examines two processes: the PowerShell window, and a minimized Notepad:
#requires -Version 2 function Get-ProcessInfoUI($Process) { foreach ($proc in $Process) { Add-Type -AssemblyName UIAutomationClient [System.Windows.Automation.AutomationElement]::FromHandle($proc.MainWindowHandle).Current | Select-Object -Property Name, HasKeyboardFocus, IsOffscreen, BoundingRectangle, NativeWindowHandle, ProcessId, Orientation, FrameworkId } } # get current PowerShell process: $ise = Get-Process -Id $pid # start new Notepad and wait until loaded: $notepad = Start-Process notepad -WindowStyle Minimized -PassThru $null = $notepad.WaitForInputIdle() # get UI information for these processes Get-ProcessInfoUI $ise, $notepad | Out-GridView -Title 'UI Information'
The output is shown in a grid view window but can also be output to your console:
Name : Windows PowerShell ISE-Mainwindow HasKeyboardFocus : False IsOffscreen : False BoundingRectangle : -9;-9;1618;868 NativeWindowHandle : 131848 ProcessId : 4428 Orientation : None FrameworkId : WPF Name : Untitled - Editor HasKeyboardFocus : False IsOffscreen : False BoundingRectangle : Empty NativeWindowHandle : 593514 ProcessId : 2924 Orientation : None FrameworkId : Win32
Throughout this month, we’d like to point you to three awesome community-driven global PowerShell events taking place this year:
Europe: April 20-22: 3-day PowerShell Conference EU in Hannover, Germany, with more than 30+ speakers including Jeffrey Snover and Bruce Payette, and 60+ sessions: www.psconf.eu.
Asia: October 21-22: 2-day PowerShell Conference Asia in Singapore. Watch latest announcements at www.psconf.asia
North America: April 4-6: 3-day PowerShell and DevOps Global Summit in Bellevue, WA, USA with 20+ speakers including many PowerShell Team members: https://eventloom.com/event/home/PSNA16
All events have limited seats available so you may want to register early.