web-dev-qa-db-ja.com

フォーカスIE PowerShellのウィンドウ

私のコード:

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

ただし、全画面表示後もウィンドウは表示されますbehind Windowsタスクバー。ウィンドウをクリックしてフォーカスを合わせると、タスクバーが遅れて表示されます。これをプログラムで行うにはどうすればよいですか?ありがとうございました!

2
GiantDuck

IE COMオブジェクトを作成し、URLに移動し、IEをフォアグラウンドウィンドウとして設定し、オプションでフルスクリーンにするOpen-InternetExplorer関数を作成しました。

-InForegroundスイッチが使用されると、ネイティブ SetForegroundWindow Win32APIが呼び出されることに注意してください。この関数がフォアグラウンドウィンドウを変更しない状況がいくつかあります。これらの状況は、関数のMSDNドキュメントに概説されています。

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
}

提供されているスクリプトは機能するはずですが、リソース管理に関していくつかの潜在的な問題があります。

COMオブジェクトを返すことに関連して特定のことをする必要があるかどうかはわかりません。 .NETまたはPowerShellのいずれかがこれ自体を処理する可能性がありますが、そうでない場合は、リソースリークの可能性があります。

また、SetForegroundWindowに渡される前にInternetExplorer.HWNDが有効であることを確認することに関して、(もしあれば)何をすべきかわかりません。


. .\Open-InternetExplorer.ps1
Open-InternetExplorer -Url www.example.com -FullScreen -InForeground
2
Crippledsmurf