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

Deploying LDAP / Active Directory Self Service Password Portal

Overview: There are several choices of platforms to deploy Password Manager: Kubernetes, Docker, Windows, and…

How to Enable GPUPDATE When Connected via OpenVPN Client

// Explanation: to prevent locking of processes, we set a proxy batch file (on_connect.bat) to…

PowerShell: Automatically Log Off Idling Remote Desktop Sessions

Add this script to your task scheduler or Jenkins job to automatically log off Idling…