Posted On June 17, 2020

PowerShell: How to Send Key Strokes to a Program Graphical User Interface

kimconnect 0 comments
blog.KimConnect.com >> Codes >> PowerShell: How to Send Key Strokes to a Program Graphical User Interface
# WARNING: there's a kill-process command when the target program is already running 
# so that it could be restarted; hence, making the send keys predictable.
# This can be undesirable if such an executable is multi-user oriented.
# Uh, also, this doesn't work if the 'executable' is an alias or or a trigger to invoke
# another program. It would take more codes that what you see here to account for those scenarios
$programExecutable="C:\Program Files\Notepad++\notepad++.exe"
$programTitle='Notepad++'
$sendkeys="{UP}{UP}{DOWN}{DOWN}{LEFT}{RIGHT}{LEFT}{RIGHT}{B}{A}{K}{O}{N}{A}{M}{I}"
$waitSeconds=5
function sendKeysToProgram($programExe,$programTitle,$sendkeys,$waitSeconds){    
    $processes=get-process
    $processStarted=$programExe -in $processes.Path
    if($processStarted){
        $processMatch=$processes|?{$programExe -eq $_.Path}
        stop-process $processMatch -Force
        }    
    start-process $programExe|out-null
    $wshell = New-Object -ComObject wscript.shell;
    $wshell.AppActivate($programTitle)|out-null
    sleep $waitSeconds
    $wshell.SendKeys($sendkeys)    
    }
KeysToProgram $programExecutable $programTitle $sendKeys $waitSeconds

Leave a Reply

Your email address will not be published. Required fields are marked *

Related Post

PowerShell: Windows Session Memory Usage Watcher

# windowsSessionWatcher.ps1 $serverNames=@( 'IRV-RDS01.domain1.net', 'LAX-RDS02.domain2.com ) $thresholdMemoryUsagePercent=30 $thresholdMemoryGb=20 $domainCreds=@( @{domain='domain1.ad';username='domain1\sysadmin';password=$env:pass1} @{domain='domain2.com';username='domain2\sysadmin';password=$env:pass2} ) # Email relay…

PowerShell: Automating Dynamics CRM Migration

This is the source code that has been used to move hundreds of Dynamics CRM…

A Few Todos while Securing Apache Server

- Install mod_security - Set expose_php = Off in php.ini - Set SecResponseBodyAccess Off in…