2016-12-02 85 views
0

窗口的工作这是我创建的脚本:PowerShell脚本只有当点击

add-type -AssemblyName System.Windows.Forms  
$ie = New-Object -ComObject "InternetExplorer.Application" 
$ie.Navigate("http://www.microsoft.com") 
$ie.Navigate2("http://www.google.com" , 2048) 
$ie.Navigate2("http://www.outlook.com" , 2048) 
$ie.Navigate2("https://studer-ksg.intranet.koerber.de/de/nc/fritz-studer-ag.html" , 2048) 
$ie.Visible = $true 

start-sleep -Milliseconds 4000 
[System.Windows.Forms.SendKeys]::SendWait('{F11}') 

do 
{ 
    start-sleep -Milliseconds 4000 
    [System.Windows.Forms.SendKeys]::SendWait('^{TAB}') 
    start-sleep -Milliseconds 100 
    [System.Windows.Forms.SendKeys]::SendWait("{F5}") 
} 
While ($i -ne 0) 

它打开,在全屏4个选项卡和交换机之间的IE窗口。当我启动脚本时,窗口打开,但没有任何反应,直到我点击它。我怎样才能自动做到这一点,所以你只需要运行脚本,一切都自行完成?

+0

我的猜测是System.Windows.Forms.SendKeys] :: SendWait需要关注的焦点。尝试添加'$ ie.TopMost = $ true' –

+0

我看到您现在在您的代码中使用了我的答案,请将它标记为已接受:http://meta.stackexchange.com/questions/5234/how-does -accepting-的回答工作 –

回答

0

你需要把IE窗口的前面,所以它焦点前的SendKeys将工作:

Add-Type -AssemblyName System.Windows.Forms 
Add-Type -Assembly "Microsoft.VisualBasic" 

$ie = New-Object -ComObject "InternetExplorer.Application" 
$ie.Navigate("http://www.microsoft.com") 
$ie.Navigate2("http://www.google.com" , 2048) 
$ie.Navigate2("http://www.outlook.com" , 2048) 
$ie.Visible = $true 

$IEProcess = Get-Process | Where { $_.MainWindowHandle -eq $ie.HWND } 
[Microsoft.VisualBasic.Interaction]::AppActivate($IEProcess.Id) 

Start-Sleep -Milliseconds 4000 
[System.Windows.Forms.SendKeys]::SendWait('{F11}') 

do 
{ 
    Start-Sleep -Milliseconds 4000 
    [System.Windows.Forms.SendKeys]::SendWait('^{TAB}') 
    Start-Sleep -Milliseconds 100 
    [System.Windows.Forms.SendKeys]::SendWait("{F5}") 
} 
While ($i -ne 0)