Sendkeys Powershell无法正常工作

时间:2013-12-21 19:32:53

标签: powershell

是否有另一种方法可以向应用程序发送击键?

我有这个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}")

3 个答案:

答案 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