Страницы

воскресенье, 9 июня 2013 г.

Как скрыть консоль PowerShell.

Иногда возникает необходимость отобразить пользовательский интерфейс и скрыть консоль. Следующий код решает вопрос используя механизм вызова неуправляемого кода для вызова функций библиотеки User32.dll, включенной в стандартную установку любой современной операционной системы Windows.

$sw_sig = @'
    [DllImport("User32.dll")]
    public static extern bool ShowWindow(IntPtr hWnd, Int32 nCmdShow);
'@
$sw = Add-Type -MemberDefinition $sw_sig -Name "Win32ShowWindow" -Namespace Win32Functions -PassThru
$hWnd = (Get-Process -Id $pid).MainWindowHandle

$sw::ShowWindow($hWnd, 0)

Add-Type -AssemblyName System.Windows.Forms
$Form = New-Object System.Windows.Forms.Form
$Form.ShowInTaskbar = $false
$Form.ShowDialog()

$sw::ShowWindow($hWnd, 1)

Для теста копируем код в PowerShell ISE и выполняем.
После закрытия окна формы окно PowerShell ISE снова отображается и возвращает нам результат работы скрипта.