#Functions_SendKeys
Add-Type -AssemblyName Microsoft.VisualBasic
Add-Type -AssemblyName System.Windows.Forms
function CntPs($PsIn){
if($PsIn -eq $null){ return 0 }
try{ $huga = $PsIn[0] }
catch{ return 1 }
return @($PsIn).Length
}
function IsInPs($Title){
$Ps = Get-Process | select MainWindowTitle | `
where{$_.MainWindowTitle -like "*$Title*"}
if(CntPs $Ps -gt 0){return $true}else{return $false}
}
# "*"無しで指定
function OpenAndActivate{
param(
[string]$FullOpen,
[string]$AddPara, # 飛ばしてもいい
[string]$TitleKey
)
if([bool]$TitleKey -eq $false){
$TitleKeyEffect = $AddPara
}else{
$TitleKeyEffect = $TitleKey
}
$PsMoto = Get-Process | select Id,MainWindowTitle | `
where{$_.MainWindowTitle -like "*$TitleKeyEffect*"}
if([bool]$AddPara -and [bool]$TitleKey){
& $FullOpen $AddPara
}else{
& $FullOpen
#Invoke-Item $FullOpen
}
$flagStart = $false
for ($i=0; $i -lt 20; $i++){
Start-Sleep -Milliseconds 200
$PsShin = Get-Process | select Id,MainWindowTitle,CPU | `
where{$_.MainWindowTitle -like "*$TitleKeyEffect*"}
if( (CntPs $PsShin) -gt ( CntPs $PsMoto)){
$PsShin = $PsShin | sort -Property CPU | select -First 1
$IdShin = $PsShin.Id
Write-Host "Process Started."
$flagStart = $true
break
}else{
Write-Host "Waite Starting…"
}
}
if($flagStart -eq $false){
Write-Warning "Fail Start. Exit."
return $false
}
for ($i=0; $i -lt 20; $i++){
Start-Sleep -Milliseconds 200
$flagActive = $true
try{
[Microsoft.VisualBasic.Interaction]::AppActivate($IdShin)
}
catch{
Write-Host "Waite Activating…"
$flagActive = $false
}
if($flagActive -eq $true){
Write-Host "Successful Activated."
return $true
}
}
Write-Warning "Fail Activate."
return $false
}
# "*"無しで指定
function MyActivate($TitleKey){
for ($i=0; $i -lt 20; $i++){
Start-Sleep -Milliseconds 100
$flagActive=$true
try{
[Microsoft.VisualBasic.Interaction]::AppActivate($TitleKey)
}
catch{
Write-Host "Waite Activating…"
$flagActive=$false
}
if($flagActive -eq $true){
Write-Host "Successful Activated."
return $true
}
}
Write-Warning "Fail Activate."
return $false
}
function SendKeys($TitleKey,$StrKeyStroke,$WaiteMilli){
MyActivate($TitleKey)
Start-Sleep -Milliseconds $WaiteMilli
[Windows.Forms.SendKeys]::SendWait($StrKeyStroke)
Start-Sleep -Milliseconds $WaiteMilli
}
#$fullOpen = 'C:\WINDOWS\system32\notepad.exe'
#$titleKey ='メモ帳'
#OpenAndActivate $fullOpen $titleKey
#SendKeys $titleKey "aab" 100
# KeyStroke
<#
"a", "A" "1", "!"
Space : " "
Enter : "~" "{ENTER}"
Tab : "{TAB}"
Ctrl : "^"
Shift : "+"
Alt : "%"
複数指定
"aBc123"
"^(ac)" :Ctrl+A,Ctrl+C
他
"{BS}" "{DEL}" "{LEFT}" "{F4}"
ループ
"{a 5}"
"{TAB 5}"
#>