Open-InternetExplorer
Bir 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 .
-InForeground
Anahtar 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