# 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
Categories: