Powershell'de IE penceresine odaklanın [kapalı]


2

Benim kod:

$ie = new-object -com "InternetExplorer.Application"
$ie.navigate("http://localhost")
$ie.visible = $true
$ie.fullscreen = $true

Ancak, tam ekrandan sonra, pencere hala Windows görev çubuğunun arkasında belirir . Odağı vermek için pencereyi tıklattığımda, görev çubuğu geride kalıyor ve istediğim gibi görünüyor. Bunu programlı olarak nasıl yapabilirim? Teşekkür ederim!


Garip, bunu çoğaltamam. Hangi pencereleri (8 veya 8.1?) Ve Powershell sürümünü kullanıyorsunuz. Mine, Windows 7 x64 ve Powershell 7.0 ve görev çubuğu anında gizlenir
nixda

@ nixda Win8 x64. PSVersion3.0 döndürür. Teşekkürler!
GiantDuck,

1
8.1 x64 PowerShell 4.0
Crippledsmurf

SO muhtemelen kodla ilgili sorulara odaklandığından, Stack Overflow'da bu konu hakkında muhtemelen daha fazla bilgi veriyor. Aşağıda bir cevap verdim, çünkü soru geçerli değil. ve Stack Overflow'a geçiş için işaretlendi
Crippledsmurf

Yanıtlar:


2

Open-InternetExplorerBir IE COM nesnesi oluşturan, bir URL'ye giden, IE'yi ön plan penceresi ve isteğe bağlı olarak tam ekran olarak ayarlayan bir işlev oluşturdum .

-InForegroundAnahtar kullanıldığında yerel SetForegroundWindow Win32 API'sine bir çağrı yapıldığı not edilmelidir . Bu işlevin ön pencereyi değiştirmeyeceği bazı durumlar vardır. Bu durumlar, işlevle ilgili MSDN belgelerinde açıklanmıştır.

function Add-NativeHelperType
{
    $nativeHelperTypeDefinition =
    @"
    using System;
    using System.Runtime.InteropServices;

    public static class NativeHelper
        {
        [DllImport("user32.dll")]
        [return: MarshalAs(UnmanagedType.Bool)]
        private static extern bool SetForegroundWindow(IntPtr hWnd);

        public static bool SetForeground(IntPtr windowHandle)
        {
           return NativeHelper.SetForegroundWindow(windowHandle);
        }

    }
"@
if(-not ([System.Management.Automation.PSTypeName] "NativeHelper").Type)
    {
        Add-Type -TypeDefinition $nativeHelperTypeDefinition
    }
}

function Open-InternetExplorer
{
    Param
    (
        [Parameter(Mandatory=$true)]
        [string] $Url,
        [switch] $InForeground,
        [switch] $FullScreen
    )
    if($InForeground)
    {
        Add-NativeHelperType
    }

    $internetExplorer = new-object -com "InternetExplorer.Application"
    $internetExplorer.navigate($Url)
    $internetExplorer.Visible = $true
    $internetExplorer.FullScreen = $FullScreen
    if($InForeground)
    {
        [NativeHelper]::SetForeground($internetExplorer.HWND)
    }
    return $internetExplorer
}

Sağlanan komut dosyası çalışmalıdır, ancak kaynak yönetimi ile ilgili bazı potansiyel sorunlar vardır.

COM nesnesini döndürmek için belirli bir şey yapmam gerekip gerekmediğinden emin değilim. .NET veya PowerShell'in kendisi bunu ele alması mümkündür, ancak değilse, kaynak sızıntısı olasılığı vardır.

Ayrıca InternetExplorer.HWND, geçmeden önce geçerli olduğundan emin olmak için ne yapmam gerektiğinden de emin değilim .SetForegroundWindow


Örnek Kullanım:

. .\Open-InternetExplorer.ps1
Open-InternetExplorer -Url www.example.com -FullScreen -InForeground
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.