2010-09-28 7 views
0

Je dois pouvoir exécuter ce script et le faire agrandir une fenêtre si elle n'est pas déjà agrandie. Et restaurez la fenêtre si ce n'est pas le cas. 8O)Comment contrôler l'état d'une fenêtre (maximiser, minimiser, restaurer) avec un script PowerShell?

Je prévois de l'activer à partir d'une séquence de raccourcis clavier.

Il doit fonctionner sous PS v1 (je sais, je sais, mais je n'ai pas de contrôle sur la version au travail).

Merci. Clarification: Comme je ne peux pas mettre à jour PS vers v2, je ne peux pas non plus installer d'applications séparées. Y at-il un moyen de le faire avec des commandes natives?

Répondre

2

Set-WindowPosition - mis une (ou tous) en haut, à gauche, la largeur, la hauteur sur une fenêtre ... ou agrandir/réduire/restaurer

Get-WindowPosition - obtenir la position (de type de redondance , en fait, puisque l'objet de la fenêtre a sa position en tant que propriété)

http://wasp.codeplex.com/

+0

Eh oui, que était la première idée qui me vient à l'esprit - guêpe :) – stej

0

cela fonctionne:

(Get-Host).UI.RawUI 
$a = (Get-Host).UI.RawUI 
$a.BackgroundColor = "white" 
$a.ForegroundColor = "black" 

$size = (Get-Host).UI.RawUI.WindowSize 
$size.Width = 80 
$size.Height = 30 
(Get-Host).UI.RawUI.WindowSize = $size 

Mais cette ne compte pas:

$position = (Get-Host).UI.RawUI.Windowposition 
$position.X = 0 
$position.Y = 30 
(Get-Host).UI.RawUI.Windowposition = $position 
0

Juste au cas où vous faites cela vous-même ou votre lieu de travail permet aux modules open source:

J'ai utilisé le module powershell de UIAutomation (http://uiautomation.codeplex.com/). Voici mon script PowerShell pour déplacer une fenêtre vers un autre moniteur (ce qui nécessite d'aller à la normale et de maximiser les modes).

Start-Process Chrome  
##orient new chrome window in full screen on left monitor 
#get reference to new chrome window 
$nextWin = Get-UiaWindow -Name "*New Tab*" 
#transform window to "restore" mode (make sure window is not maximized) 
$nextWin.SetWindowVisualState("Normal") 
#move window to left monitor 
$nextWin.Move(-1920,0) 
#maximize window 
$nextWin.SetWindowVisualState("Maximize") 

Bien sûr, les principaux takaways ici sont:

$nextWin.SetWindowVisualState("Normal") 
$nextWin.SetWindowVisualState("Maximize") 
$nextWin.SetWindowVisualState("Minimize") 

Et il y a quelques options pour obtenir une fenêtre ($ nextWin) incluant une Get-UiaActiveWindow

Questions connexes