Разверните окно и поставьте его вперед с PowerShell - PullRequest
13 голосов
/ 14 февраля 2011

Есть ли способ вывести окно вперед из powershell?Я пытался это скрыть все окна (работает) и вернуть мне PowerShell (не работает)

[void] [System.Reflection.Assembly]::LoadWithPartialName("'Microsoft.VisualBasic")
$shell = New-Object -ComObject “Shell.Application”
$shell.MinimizeAll()

$a = Get-Process | Where-Object {$_.Name -like "powershell"}
[Microsoft.VisualBasic.Interaction]::AppActivate($a.ID)

Есть предложения?

Ответы [ 2 ]

18 голосов
/ 14 февраля 2011

Расширения сообщества PowerShell имеют командлет для помощи в этом.Вы используете это так:

Set-ForegroundWindow (Get-Process PowerShell).MainWindowHandle

или

Set-ForegroundWindow (Get-Process -id $pid).MainWindowHandle

Чтобы активировать / показать окно, попробуйте это (если вы используете PowerShell 2.0):

$sig = '[DllImport("user32.dll")] public static extern bool ShowWindowAsync(IntPtr hWnd, int nCmdShow);'
Add-Type -MemberDefinition $sig -name NativeMethods -namespace Win32
Stop-Process -Name Notepad -ea 0;Notepad.exe
$hwnd = @(Get-Process Notepad)[0].MainWindowHandle
# Minimize window
[Win32.NativeMethods]::ShowWindowAsync($hwnd, 2)
# Restore window
[Win32.NativeMethods]::ShowWindowAsync($hwnd, 4)
Stop-Process -Name Notepad
0 голосов
/ 12 июля 2018

Это немного обманывает, поскольку он использует WScript, но следующая однострочная строка помещает окно на передний план, не требуя установки внешнего командлета.

В приведенном ниже примере «блокнот» - это имя процессасвязанный с окном.

Кредит отправляется на форум Idera здесь от JSanders:

(New-Object -ComObject WScript.Shell).AppActivate((get-process notepad).MainWindowTitle)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...