是否有另一种方法可以向应用程序发送击键?
我有这个Powershell脚本,在按下反引号键后,控制台应该在应用程序中打开,但这不会发生,但按键盘的方式可以完美地运行。
在我自己打开控制台后,sendkeys确实有效,但第一个sendkeys(反引号)不起作用。
我需要的是脚本通过发送反引号键打开控制台。
# startpwsscrip.ps1
function wait {
param([int]$stop = 8)
Start-Sleep -seconds $stop
}
[void] [System.Reflection.Assembly]::LoadWithPartialName("'Microsoft.VisualBasic")
& "$env:C:\Program Files (x86)\Steam\SteamApps\common\Half-Life\cstrike.exe"
$a = Get-Process | Where-Object {$_.Name -eq "Counter-strike"}
wait3
$Cursor = [system.windows.forms.cursor]::Clip
[System.Windows.Forms.Cursor]::Position = New-Object system.drawing.point(509,763)
wait
[System.Windows.Forms.SendKeys]::SendWait({"ENTER"})
wait
[System.Windows.Forms.SendKeys]::SendWait({"`"})
wait
[System.Windows.Forms.SendKeys]::SendWait("connect ")
wait
[System.Windows.Forms.SendKeys]::SendWait("192.168.1.1")
wait
[System.Windows.Forms.SendKeys]::SendWait("{ENTER}")
答案 0 :(得分:0)
我看到的第一个问题是你没有引用System.Windows.Forms,你的VisualBasic引用中有一个额外的单引号,这可能不是很好。
add-type -AssemblyName System.Windows.Forms
#or
[void] [System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")
此处有额外的单引号。
("'Microsoft.VisualBasic")
# should be one or the other
('Microsoft.VisualBasic')
("Microsoft.VisualBasic")
“等待”或“等待3”不是ps1方法,请尝试启动 - 睡眠1
Start-Sleep 1
Start-Sleep 3
答案 1 :(得分:0)
由于反引号是一个特殊字符,请尝试使用双反引号。 一个用于逃避另一个,这样:
<强> [System.Windows.Forms.SendKeys] :: SendWait( “``”)强>
答案 2 :(得分:0)
Backtick是双引号字符串中的转义字符。您应该使用单引号字符串,因为单引号字符串的内容是按字面解释的。此外,您不需要在字符串周围使用大括号。
[System.Windows.Forms.SendKeys]::SendWait('`')
另见:
help about_Quoting_Rules
help about_Escape_Characters