2009-08-27 4 views
2

Простите меня, если это слишком простой вопрос, но я пока не нахожу ничего в файлах справки или в Интернете относительно этого. Я открываю новое окно браузера, чтобы протестировать функцию входа/выхода из веб-приложения, но я хочу открыть окно IE в максимизированном режиме. Я мог бы установить размер, как:Открытый IE максимизирован из сценария Powershell?

$ ie.height = 1024 $ ie.width - 768

Но есть ключевое слово или что-нибудь, что я могу использовать, чтобы просто открыть его максимальной автоматически или мне нужно сначала запросить размер экрана, а затем заполнить значения из этого запроса?

/матовый

ответ

4

(новый объект-wscript.shell-Com) .run ("URL", 3)

+0

Это открывает IE, но не максимизирует его - по крайней мере, на моем ПК Win7. –

+0

Он запускает браузер по умолчанию, и в моем случае он был максимальным на моей машине Win7, но это было в Firefox. Я собираюсь изменить его, чтобы запустить IE и посмотреть, что я получу. Спасибо вам за ваш вклад, я ценю это. /matt –

+0

Установка моего браузера по умолчанию в IE, он запускается в максимизированном режиме. Отлично! –

1

Если у вас есть PowerShell Community Extensions 1.2 (PSCX), установленный на PowerShell 2.0, я проверил, что это работает:

Pscx\Start-Process IExplore.exe; Start-Sleep 3; $hwnd = Get-ForegroundWindow 
$sig = @' 
[DllImport("user32.dll")] 
public static extern bool ShowWindowAsync(IntPtr hWnd, int nCmdShow); 
'@ 
Add-Type -MemberDefinition $sig -name NativeMethods -namespace Win32 
[Win32.NativeMethods]::ShowWindowAsync($hwnd, 3) 

Это немного рискованный, поскольку он использует ожидание (начало -sleep) в течение 3 секунд, чтобы дождаться открытия IE, а затем он использует командлет PSCX для получения дескриптора окна переднего плана. Если у вас есть только один экземпляр IEXPLORE работает, то вы можете использовать это, чтобы получить эту ручку:

@(Get-Process IExplore)[0].MainWindowHandle 

PowerShell 2.0 требуется для Add-Type поддержки, что позволяет нам призвать к Win32 API.

BTW из быстрого поиска Bing кажется, что получение IE для запуска максимизировано - довольно распространенная проблема. Например, с помощью Start-Process вы можете указать -WindowStyle Maximized, но IE не соблюдает это.

+0

Спасибо за предложение, я поп, что и посмотреть, что я получаю. Немного смутившись, вы так легко находили информацию на Bing, я искал несколько вариантов при открытии окна в максимальном размере, и большинство возвратов занимались открытием окна Powershell! Все, как вы спрашиваете, я думаю! –

+0

Ну, чтобы быть ясным, я просто искал «Open IExplore Maximized» в Bing и заметил, что даже вне контекста PowerShell у людей есть проблемы с этим. –

3

решена проблема начиная IE максимизируется со следующими:

Function maxIE 
{ 
param($ie) 
$asm = [System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms") 

    $screen = [System.Windows.Forms.Screen]::PrimaryScreen.Bounds 
    $ie.Width = $screen.width 
    $ie.Height =$screen.height 
    $ie.Top = 0 
    $ie.Left = 0 
} 


cls 
$ie = new-object -com "InternetExplorer.Application" 
$ie.visible = $true 
maxIE $ie 
while ($ie.busy) {sleep -milliseconds 50} 
$ie.navigate("http://www.google.com") 
1

Я не мог получить любой конкретный ответ на работу, но получил комбинацию для работы. Порядок, в котором они называются, является важным, иначе он не работает.

Полный пример:

$ie = New-Object -Com "InternetExplorer.Application" 
$urls = @("http://www.google.com","http://www.yahoo.com") 
$ie.Visible = $true 
CLS 
write-output "Loading pages now..." 
#Maximize IE window 
$asm = [System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms") 
$screen = [System.Windows.Forms.Screen]::PrimaryScreen.Bounds 
$ie.height = $screen.height 
#Open webpages 
foreach ($link in $urls) { 
    $ie.Navigate2($link, 0x1000) 
} 
#close first blank tab 
$sa = New-Object -ComObject Shell.Application 
$tab = $sa.windows() | Where {$_.Name -match 'Internet Explorer' -and  $_.LocationName -eq ''} 
$tab.quit() 
Смежные вопросы