2015-10-17 107 views
2
$a = [char]65 
$w1 = New-Object -ComObject wscript.shell; 
$w1.AppActivate('Untitled - Notepad') 
Sleep 1 
Write-Host $a 
$w1.SendKeys($a); 

在PowerShell脚本中,我试图用SendKeys命令与值类型转换变量$a[char],使信A出现在记事本的65。这给了我预期的结果,当我运行线路:如何使类型强制转换的变量出现的关键,而不是使用值的SendKeys

Write-Host $a 

A出现在PowerShell中)

但每当以下行运行:

$w1.SendKeys($a); 

数字65放入记事本而不是A

为什么在给定相同参数时这两条线会产生不同的输出,我该怎么做才能使变量$a在两种情况下输出字符A

回答

2

因为char是整数类型,所以SendKeys$a作为整数处理。你可以通过在65直接获得相同的行为:

$w1.SendKeys(65); # Sends "65" to Notepad 

要解决此问题,需要明确给出SendKeys字符串参数。最简单的方法是将$a放在引号中:

$w1.SendKeys("$a"); 
相关问题