UI Automation (PS)
Sample (Calculator)
Import-Module "C:\Users\User\UIAutomation\UIAutomation.dll" $process = Start-Process calc -PassThru $window = Get-UiaWindow -Name 'Calculator' for ( $i = 0; $i -lt 3; $i++ ) { $window | Get-UiaButton -Name 'Two' | Invoke-UiaButtonClick | Out-Null $window | Get-UiaButton -Name 'Plus' | Invoke-UiaButtonClick | Out-Null $window | Get-UiaButton -Name 'Five' | Invoke-UiaButtonClick | Out-Null $window | Get-UiaButton -Name 'Equals' | Invoke-UiaButtonClick | Out-Null }
Sample (Notepad)
Import-Module "C:\Users\User\UIAutomation\UIAutomation.dll" $datapath = "C:\Users\User\Desktop" $filename = "sample.txt" $exefname = "notepad" ## open file $process = Start-Process $exefname -PassThru | Get-UiaWindow $process.Keyboard.KeyPress([WindowsInput.Native.VirtualKeyCode]::MENU) | Out-Null $process.Keyboard.KeyPress([WindowsInput.Native.VirtualKeyCode]::VK_F) | Out-Null $process.Keyboard.KeyPress([WindowsInput.Native.VirtualKeyCode]::VK_O) | Out-Null ## select file $openwnd = Get-UiaWindow -Name 'Open' $openwnd.Keyboard.KeyPress([WindowsInput.Native.VirtualKeyCode]::F4) | Out-Null $openwnd.Keyboard.KeyDown([WindowsInput.Native.VirtualKeyCode]::CONTROL) | Out-Null $openwnd.Keyboard.KeyPress([WindowsInput.Native.VirtualKeyCode]::VK_A) | Out-Null $openwnd.Keyboard.KeyUp([WindowsInput.Native.VirtualKeyCode]::CONTROL) | Out-Null $openwnd.Keyboard.KeyPress([WindowsInput.Native.VirtualKeyCode]::DELETE) | Out-Null $openwnd.Keyboard.TypeText($datapath) | Out-Null $openwnd.Keyboard.KeyPress([WindowsInput.Native.VirtualKeyCode]::RETURN) | Out-Null $openwnd.Keyboard.KeyPress([WindowsInput.Native.VirtualKeyCode]::TAB) | Out-Null $openwnd.Keyboard.KeyPress([WindowsInput.Native.VirtualKeyCode]::TAB) | Out-Null $openwnd.Keyboard.KeyPress([WindowsInput.Native.VirtualKeyCode]::TAB) | Out-Null $openwnd.Keyboard.KeyPress([WindowsInput.Native.VirtualKeyCode]::TAB) | Out-Null $openwnd.Keyboard.KeyPress([WindowsInput.Native.VirtualKeyCode]::TAB) | Out-Null $openwnd.Keyboard.TypeText($filename) | Out-Null $openwnd.Keyboard.KeyPress([WindowsInput.Native.VirtualKeyCode]::RETURN) | Out-Null $openwnd.Keyboard.KeyPress([WindowsInput.Native.VirtualKeyCode]::RETURN) | Out-Null ## edit $process.Keyboard.KeyPress([WindowsInput.Native.VirtualKeyCode]::VK_2) | Out-Null $process.Keyboard.KeyPress([WindowsInput.Native.VirtualKeyCode]::ADD) | Out-Null $process.Keyboard.KeyPress([WindowsInput.Native.VirtualKeyCode]::VK_5) | Out-Null $process.Keyboard.KeyPress([WindowsInput.Native.VirtualKeyCode]::RETURN) | Out-Null ## save $process.Keyboard.KeyPress([WindowsInput.Native.VirtualKeyCode]::MENU) | Out-Null $process.Keyboard.KeyPress([WindowsInput.Native.VirtualKeyCode]::VK_F) | Out-Null $process.Keyboard.KeyPress([WindowsInput.Native.VirtualKeyCode]::VK_S) | Out-Null $process.Keyboard.KeyPress([WindowsInput.Native.VirtualKeyCode]::MENU) | Out-Null $process.Keyboard.KeyPress([WindowsInput.Native.VirtualKeyCode]::VK_F) | Out-Null $process.Keyboard.KeyPress([WindowsInput.Native.VirtualKeyCode]::VK_X) | Out-Null
Sample (Notepad and Screenshot)
Import-Module "C:\Users\User\UIAutomation\UIAutomation.dll" $datapath = "C:\Users\User\Desktop\Sample" $exefname = "notepad" $array = dir $datapath foreach ( $file in $array ) { $filefull = $file.FullName $filepath = $file.DirectoryName $fileprefix = $file.BaseName $fileext = $file.Extension $filename = "$fileprefix$fileext" $outfile = "$fileprefix.png" ## open file $process = Start-Process $exefname -PassThru -windowstyle Maximized | Get-UiaWindow $process.Keyboard.KeyPress([WindowsInput.Native.VirtualKeyCode]::MENU) | Out-Null $process.Keyboard.KeyPress([WindowsInput.Native.VirtualKeyCode]::VK_F) | Out-Null $process.Keyboard.KeyPress([WindowsInput.Native.VirtualKeyCode]::VK_O) | Out-Null ## select file $openwnd = Get-UiaWindow -Name 'Open' $openwnd.Keyboard.KeyPress([WindowsInput.Native.VirtualKeyCode]::F4) | Out-Null $openwnd.Keyboard.KeyDown([WindowsInput.Native.VirtualKeyCode]::CONTROL) | Out-Null $openwnd.Keyboard.KeyPress([WindowsInput.Native.VirtualKeyCode]::VK_A) | Out-Null $openwnd.Keyboard.KeyUp([WindowsInput.Native.VirtualKeyCode]::CONTROL) | Out-Null $openwnd.Keyboard.KeyPress([WindowsInput.Native.VirtualKeyCode]::DELETE) | Out-Null $openwnd.Keyboard.TypeText($filepath) | Out-Null $openwnd.Keyboard.KeyPress([WindowsInput.Native.VirtualKeyCode]::RETURN) | Out-Null $openwnd.Keyboard.KeyPress([WindowsInput.Native.VirtualKeyCode]::TAB) | Out-Null $openwnd.Keyboard.KeyPress([WindowsInput.Native.VirtualKeyCode]::TAB) | Out-Null $openwnd.Keyboard.KeyPress([WindowsInput.Native.VirtualKeyCode]::TAB) | Out-Null $openwnd.Keyboard.KeyPress([WindowsInput.Native.VirtualKeyCode]::TAB) | Out-Null $openwnd.Keyboard.KeyPress([WindowsInput.Native.VirtualKeyCode]::TAB) | Out-Null $openwnd.Keyboard.TypeText($filename) | Out-Null $openwnd.Keyboard.KeyPress([WindowsInput.Native.VirtualKeyCode]::RETURN) | Out-Null $openwnd.Keyboard.KeyPress([WindowsInput.Native.VirtualKeyCode]::RETURN) | Out-Null Start-Sleep -m 1000 $process.Keyboard.KeyDown([WindowsInput.Native.VirtualKeyCode]::MENU) | Out-Null $process.Keyboard.KeyPress([WindowsInput.Native.VirtualKeyCode]::SNAPSHOT) | Out-Null $process.Keyboard.KeyUp([WindowsInput.Native.VirtualKeyCode]::MENU) | Out-Null $process.Keyboard.KeyPress([WindowsInput.Native.VirtualKeyCode]::MENU) | Out-Null $process.Keyboard.KeyPress([WindowsInput.Native.VirtualKeyCode]::VK_F) | Out-Null $process.Keyboard.KeyPress([WindowsInput.Native.VirtualKeyCode]::VK_X) | Out-Null $paintWnd = Start-Process mspaint -PassThru -windowstyle Maximized | Get-UiaWindow $paintWnd.Keyboard.KeyDown([WindowsInput.Native.VirtualKeyCode]::CONTROL) | Out-Null $paintWnd.Keyboard.KeyPress([WindowsInput.Native.VirtualKeyCode]::VK_V) | Out-Null $paintWnd.Keyboard.KeyUp([WindowsInput.Native.VirtualKeyCode]::CONTROL) | Out-Null $paintWnd.Keyboard.KeyDown([WindowsInput.Native.VirtualKeyCode]::CONTROL) | Out-Null $paintWnd.Keyboard.KeyPress([WindowsInput.Native.VirtualKeyCode]::VK_S) | Out-Null $paintWnd.Keyboard.KeyUp([WindowsInput.Native.VirtualKeyCode]::CONTROL) | Out-Null $openWnd = Get-UiaWindow -Name 'Save As' $openWnd.Keyboard.KeyPress([WindowsInput.Native.VirtualKeyCode]::F4) | Out-Null $openWnd.Keyboard.KeyDown([WindowsInput.Native.VirtualKeyCode]::CONTROL) | Out-Null $openWnd.Keyboard.KeyPress([WindowsInput.Native.VirtualKeyCode]::VK_A) | Out-Null $openWnd.Keyboard.KeyUp([WindowsInput.Native.VirtualKeyCode]::CONTROL) | Out-Null $openWnd.Keyboard.KeyPress([WindowsInput.Native.VirtualKeyCode]::DELETE) | Out-Null $openWnd.Keyboard.TypeText($filepath) | Out-Null $openWnd.Keyboard.KeyPress([WindowsInput.Native.VirtualKeyCode]::RETURN) | Out-Null $saveProcess = $openWnd | Get-UiaEdit -Name 'File name:' $saveProcess.Value = $outfile $saveProcess.Keyboard.KeyPress([WindowsInput.Native.VirtualKeyCode]::RETURN) | Out-Null $paintWnd.Keyboard.KeyPress([WindowsInput.Native.VirtualKeyCode]::MENU) | Out-Null $paintWnd.Keyboard.KeyPress([WindowsInput.Native.VirtualKeyCode]::VK_F) | Out-Null $paintWnd.Keyboard.KeyPress([WindowsInput.Native.VirtualKeyCode]::VK_X) | Out-Null Start-Sleep -m 1000 }
References
UI Automation PowerShell Extensions
http://uiautomation.codeplex.com/
Acknowledgments
Daiphys is a professional-service company for research and development of leading-edge technologies in science and engineering.
Get started accelerating your business through our deep expertise in R&D with AI, quantum computing, and space development; please get in touch with Daiphys today!
Daiphys Technologies LLC - https://www.daiphys.com/