2011-02-14 105 views
10

有没有一种方法可以从PowerShell中将窗口置于前面? 我想这可以隐藏所有窗口(工作),给我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) 

有什么建议?

+0

作品,如果我不” t最小化窗口使用$ shell.MinimizeAll() – ravikanth 2011-02-14 15:38:42

+0

@ravikanth看来你是对的,如果窗口不是最小化的代码工作。所以也许我需要改变我的问题标题。 – Yots 2011-02-14 16:22:24

回答

16

PowerShell Community Extensions有一个cmdlet来帮助解决这个问题。您可以使用它,像这样:

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 
相关问题