2011-02-14 15 views
10

Powershell'den öndeki bir pencereyi getirmenin bir yolu var mı? BenPencereyi büyütün ve önden güçle getirin

[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) 

herhangi bir öneriniz tüm pencereleri (çalışma) gizlemek ve (çalışmıyor) Bana powershell geri getirmek için bu denedi?

+0

eserler ı don varsayalım:/bir pencere bu deneyin göstermek etkinleştirmek için

Set-ForegroundWindow (Get-Process PowerShell).MainWindowHandle 

veya

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

(eğer PowerShell 2.0 üzerinde konum varsayarak) t $ shell.MinimizeAll() kullanarak pencereleri en aza indirgeme() – ravikanth

+0

@ravikanth Pencerenin kod çalıştırıldığından daha küçük olmaması durumunda doğru olduğunuz görülüyor. Belki de soru başlığımı değiştirmem gerekiyor. – Yots

cevap

16

PowerShell Community Extensions, buna yardımcı olmak için bir cmdlet'e sahiptir. Öyle gibi kullanın: '

$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

O $ shell.MinimizeAll() '$ kabuk = Yeni-Nesne ile çalışmadığını -ComObject "Shell.Application" $ shell.MinimizeAll() Set-ForegroundWindow (Get-Process -ID görünüyor $ pid) .MainWindowHandle' hiçbir etkisi yoktur – Yots

+2

Teşekkürler Keith. ShowWindowAsync benim sorunum için bir çözüm ancak MinimizeAll() ve ShowWindowAsync arasında bir "uyku" koymak zorundayım. Görünüşe göre MinimizeAll() bir asyc görevidir ve ShowWindowAsync'i en aza indirgemek için çok fazla pencereye sahipse hızlıca çağırılır. – Yots

İlgili konular