Иногда возникает необходимость отобразить пользовательский интерфейс и скрыть консоль. Следующий код решает вопрос используя механизм вызова неуправляемого кода для вызова функций библиотеки User32.dll, включенной в стандартную установку любой современной операционной системы Windows.
Для теста копируем код в PowerShell ISE и выполняем.
После закрытия окна формы окно PowerShell ISE снова отображается и возвращает нам результат работы скрипта.
$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 снова отображается и возвращает нам результат работы скрипта.


Комментариев нет:
Отправить комментарий
Комментарий будет опубликован после модерации