C#命令中的PowerShell

C#命令中的PowerShell,c#,powershell,C#,Powershell,我对PowerShell完全陌生,对它的一些命令语法感到困惑。我一直在搜索谷歌;但是,我发现的一些语法如下 Send-Keys "%(ea)Testing{Enter}{F5}" 有一些我似乎无法摆脱的错误 比如说我打开计算器 var script = @" Start-Process calc.exe "; powerShell.AddScript(script); powerShell.Invoke(); 如

我对PowerShell完全陌生,对它的一些命令语法感到困惑。我一直在搜索谷歌;但是,我发现的一些语法如下

Send-Keys "%(ea)Testing{Enter}{F5}"
有一些我似乎无法摆脱的错误

比如说我打开计算器

var script = @" 
                Start-Process calc.exe
            ";

powerShell.AddScript(script);          
powerShell.Invoke();
如何输入字段值并发送击键? 也就是说,输入5,按-键,输入6,然后按回车键

甚至更好, 如何使用PowerShell输入某个股票符号(这不是默认的文本字段),然后按enter键进行搜索?(打开firefox.exe后,导航至www.yahoo.com)

谢谢你抽出时间

Key                  SendKeys
BACKSPACE            {BACKSPACE}, {BS}, or {BKSP}   
BREAK                {BREAK}   
CAPS LOCK            {CAPSLOCK}   
DEL or DELETE        {DELETE} or {DEL}   
DOWN ARROW           {DOWN}   
END                  {END}   
ENTER                {ENTER} or ~   
ESC                  {ESC}   
HELP                 {HELP}   
HOME                 {HOME}   
INS or INSERT        {INSERT} or {INS}   
LEFT ARROW           {LEFT}   
NUM LOCK             {NUMLOCK}   
PAGE DOWN            {PGDN}   
PAGE UP              {PGUP}   
PRINT SCREEN         {PRTSC}   
RIGHT ARROW          {RIGHT}   
SCROLL LOCK          {SCROLLLOCK}   
TAB                  {TAB}   
UP ARROW             {UP}   
SHIFT                +                 
CONTROL              ^                 
ALT                  %                 
BACKSPACE            {BACKSPACE}, {BS}, or {BKSP}  
需要记住的一点是,应用程序启动需要一段时间,您可以在计算器准备就绪之前发送密钥

尝试以下方法:

add-type -AssemblyName microsoft.VisualBasic
add-type -AssemblyName System.Windows.Forms

Calc

start-sleep -Milliseconds 500

[Microsoft.VisualBasic.Interaction]::AppActivate("Calc")
[System.Windows.Forms.SendKeys]::SendWait("1{ADD}1=")
这应该会让你从谷歌得到一个报价:

 $IE=new-object -com internetexplorer.application
 $IE.navigate2("https://www.google.co.uk/finance?client=ob&q=NASDAQ:MSFT")
 $IE.visible=$true
需要记住的一点是,应用程序启动需要一段时间,您可以在计算器准备就绪之前发送密钥

尝试以下方法:

add-type -AssemblyName microsoft.VisualBasic
add-type -AssemblyName System.Windows.Forms

Calc

start-sleep -Milliseconds 500

[Microsoft.VisualBasic.Interaction]::AppActivate("Calc")
[System.Windows.Forms.SendKeys]::SendWait("1{ADD}1=")
这应该会让你从谷歌得到一个报价:

 $IE=new-object -com internetexplorer.application
 $IE.navigate2("https://www.google.co.uk/finance?client=ob&q=NASDAQ:MSFT")
 $IE.visible=$true

我无法访问www.yahoo.com,因为它会自动将我重定向到uk.yahoo.com

然而,我能够去做你想做的事情

有点难看,依赖于页面布局,但似乎可以工作:

add-type -AssemblyName microsoft.VisualBasic
add-type -AssemblyName System.Windows.Forms

& 'C:\Program Files (x86)\Mozilla Firefox\firefox.exe' -url http://finance.yahoo.com

start-sleep 3

[System.Windows.Forms.SendKeys]::SendWait("{TAB}{TAB}{TAB}{TAB}{TAB}{TAB}{TAB}{TAB}{TAB}{TAB}{TAB}{TAB}{TAB}{TAB}{TAB}{TAB}{TAB}{TAB}{TAB}FB{ENTER}")

我无法访问www.yahoo.com,因为它会自动将我重定向到uk.yahoo.com

然而,我能够去做你想做的事情

有点难看,依赖于页面布局,但似乎可以工作:

add-type -AssemblyName microsoft.VisualBasic
add-type -AssemblyName System.Windows.Forms

& 'C:\Program Files (x86)\Mozilla Firefox\firefox.exe' -url http://finance.yahoo.com

start-sleep 3

[System.Windows.Forms.SendKeys]::SendWait("{TAB}{TAB}{TAB}{TAB}{TAB}{TAB}{TAB}{TAB}{TAB}{TAB}{TAB}{TAB}{TAB}{TAB}{TAB}{TAB}{TAB}{TAB}{TAB}FB{ENTER}")

嘿,谢谢你的回复,有没有办法保证只有在上一个命令完成后才会发送密钥?我怀疑-你所做的只是将击键转储到一个黑盒子中-如果你担心冲突,我会使用睡眠。你必须使用start-sleep commandlet来等待程序启动。上面的例子只等待500毫秒,因为计算器很快就会启动<代码>开始睡眠4将等待4秒钟。嘿,谢谢您的回复,有没有办法保证只有在上一个命令完成后才会发送密钥?我怀疑-你所做的只是将击键转储到一个黑匣子中-如果你担心冲突,我会使用sleep。你必须使用start sleep commandlet来等待程序启动。上面的例子只等待500毫秒,因为计算器很快就会启动<代码>开始睡眠4将等待4秒钟。您试图对网页执行什么操作?显示或解析它?你想对网页做什么?显示它还是解析它?