web-dev-qa-db-fra.com

Comment déplacer des fenêtres qui s'ouvrent hors écran?

J'ai une configuration à deux moniteurs et j'ai récemment joué avec les paramètres de positionnement. Certaines de mes applications à fenêtre unique préfèrent conserver l'emplacement de leur dernière fermeture et ouvrir plus tard la même position. Malheureusement, cela les place maintenant hors de la zone visible de mes écrans!

Existe-t-il un moyen de forcer une fenêtre particulière dans la zone visible?

265
Matthew Scharley

Pour Windows 7 et les utilisateurs ultérieurs: Windows Key+Shift+ ou  déplacera la fenêtre sélectionnée sur le moniteur dans cette direction.

192
andho

J'utilise cette approche:

  • Utilisation Alt+Tab pour passer à l’application hors écran.
  • Presse Alt+SPACE pour faire apparaître le menu système (vous ne le verrez pas car il est hors écran)
  • Presse R pour sélectionner le menu "Restaurer" afin de vous assurer que les fenêtres ne sont pas agrandies (vous ne pouvez pas les déplacer si elles sont agrandies)
  • Presse Alt+SPACE encore une fois M pour sélectionner le choix de menu "Déplacer".
  • Appuyez sur l'une des touches fléchées pour lancer le mouvement.
  • Maintenant, utilisez la souris pour placer la fenêtre où vous le souhaitez.

Si vous utilisez une version non anglaise de Windows, les choix de menu "R" et "M" seront probablement différents.

422
Terje Mikal

Sous Windows 10, pour utiliser l’ancien déplacement de la fenêtre à l’aide des touches de curseur, vous devez disposer du Shift touche enfoncée lorsque vous ouvrez le menu contextuel à partir de la barre des tâches.

enter image description here

Informations de How To Geek

14
Brad Patton

Vous pouvez cliquer avec le bouton droit sur le bouton du programme dans la barre des tâches, puis cliquer sur "Déplacer". Vous pouvez maintenant utiliser les flèches de votre clavier pour déplacer la fenêtre dans laquelle vous pouvez la voir. Quelques manipulations sont nécessaires, parfois les fenêtres se "coincent" sur les bords du moniteur. Vous pouvez aussi essayer d’utiliser la souris, mais le clavier est un peu plus fiable si vous ne pouvez pas voir la fenêtre pour le moment ;-)

12
Emthigious

Avant la barre des tâches, je réglais ce problème avec Alt+Space pour faire apparaître le menu de la fenêtre, puis M pour la fonction Move. Les touches fléchées vous permettraient alors de revenir à l'écran de la fenêtre.

8
Greg Hewgill

Un autre moyen rapide consiste à cliquer avec le bouton de la souris sur la barre des tâches et à sélectionner Cascade Windows.

8
T. Kaltnekar

Edit: Discontinued selon les commentaires

Pour résoudre rapidement ce problème et pour positionner les applications sur le double écran, je peux recommander Winsplit Revolution . La résolution de ce problème revient à appuyer simplement sur Ctrl-Alt et sur une touche numérique pour remettre la fenêtre exactement à l'endroit souhaité.

5
Andy

J'ai rencontré ce problème et absolument rien ne fonctionnait pour moi. Je suis donc allé dans le Gestionnaire des tâches et j'ai cliqué avec le bouton droit sur le programme qui était hors écran. Basculer vers n'a pas fonctionné, ni mis à l'avant. À noter, il s’agissait d’une fenêtre statique, l’agrandissement n’était donc pas disponible via la barre des tâches. Mais vous pouvez maximiser via le gestionnaire de tâches, et cela l'amène à votre écran principal! De là, vous pouvez faire ce que vous voulez avec la fenêtre. :)

5
Leo

Je viens de rencontrer ce problème avec l'interface graphique Git sous Windows 7, qui est basée sur Tk et, en tant que telle, a tendance à disparaître de façon étrange par moments sous Windows. J'ai essayé de frapper Alt-Space et d'utiliser la commande move pour le ramener à la vue, mais cela semblait bloqué. Le maximiser le ramènerait, mais si je le remettais en mode fenêtré, cela disparaîtrait à nouveau.

Ce que j’ai fait, c’est de l’agrandir, de saisir la barre de titre et de la faire glisser sur le côté de l’écran de sorte qu’Aero Snap l’ait dimensionnée à la moitié de la taille de l’écran et placée en mode fenêtré. Après cela, je l'ai écarté du côté de l'écran et en ai repris le contrôle.

3
unused

J'utilise un petit outil astucieux appelé Shove-it qui vérifie simplement si une fenêtre se trouve en dehors de l'écran Edge et la replace à nouveau sur l'écran. C'est un logiciel ancien (et la page d'accueil le prouve) mais fonctionne sur toutes les versions de Windows.

3

Pour ceux qui connaissent PowerShell, essayez ceci:

  • Copiez et collez le code ci-dessous dans une session PowerShell ISE.
  • Hit Run
  • Appuyez sur ALT + TAB/que vous voulez pour activer la fenêtre hors écran.
  • Attendez quelques instants (5 secondes après avoir exécuté le script)
  • La fenêtre devrait maintenant apparaître.

Si la fenêtre est une fenêtre principale, elle sera déplacée vers le coin supérieur gauche de l'écran.

Si la fenêtre est une fenêtre enfant d'un autre programme, son coin supérieur gauche sera aligné sur le coin supérieur gauche de sa fenêtre mère.

Add-Type @"
    using System;
    using System.Runtime.InteropServices;

    // https://msdn.Microsoft.com/en-us/library/windows/desktop/dd162897(v=vs.85).aspx
    public struct RECT 
    {
        public long left;
        public long top;
        public long right;
        public long bottom;
    }

    public class User32WinApi 
    {

        // https://msdn.Microsoft.com/en-us/library/windows/desktop/ms633505(v=vs.85).aspx
        /*
            Gets the handle of the in-focus window
            NB: In some scenarios this can be NULL; so code needed to handle such an event
        */
        [DllImport("user32.dll")]
        public static extern IntPtr GetForegroundWindow();

        // https://msdn.Microsoft.com/en-us/library/windows/desktop/ms633503(v=vs.85).aspx
        /*
            top & left are always 0 (i.e. since the rectangle is relative to the window itself)
            bottom & right equal the windows hieght and width, respectively.
        */
        [DllImport("user32.dll")]
        [return: MarshalAs(UnmanagedType.Bool)]
        public static extern bool GetClientRect(IntPtr hWnd, out RECT lpRect);

        // https://msdn.Microsoft.com/en-us/library/windows/desktop/ms633534(v=vs.85).aspx
        [DllImport("user32.dll")]
        [return: MarshalAs(UnmanagedType.Bool)]
        public static extern bool MoveWindow(IntPtr hWnd, int X, int Y, int nWidth, int nHeight, bool bRepaint);

    }

"@
$repaint = $true 
$windowSize = New-Object RECT

"Quick; get the window you're after in focus; you have 5 seconds..."
Start-Sleep -Seconds 5 #allow 5 seconds for the user to get the window they're after in focus (e.g. using ALT+TAB / whatever)
$activeWindow = [User32WinApi]::GetForegroundWindow()
if ($activeWindow) {
    if([User32WinApi]::GetClientRect($activeWindow, [ref]$windowSize)) {
        if ([User32WinApi]::MoveWindow($activeWindow, 0, 0, $windowSize.right, $windowSize.bottom, $repaint)) {
            "Window moved successfully (hope you agree!)"
        } else {
            Write-Warning "Failed to move the active window"
        }
    } else {
        Write-Warning "Failed to get size of the active window"    
    }
} else {
    Write-Warning "No active window found"    
}

Code original ici: https://Gist.githubusercontent.com/JohnLBevan/1593bbb860c2d2af436a1c9414e8adfa/

1
JohnLBevan

Vous pouvez utiliser NIRSOFT WinLister. J'ai remarqué que la méthode "Déplacer" n'était pas disponible sous Windows 7 lorsque vous utilisiez le thème classique. Diverses autres méthodes ont échoué. Je publie donc mon alternative "SI tout le reste échoue".

  1. Téléchargez l'application WinLister ici .

  2. Exécutez WinLister en tant qu’administrateur et sélectionnez la fenêtre que vous souhaitez revenir à l’écran. Ne pas exécuter en tant qu'administrateur ne donnera pas à l'application la possibilité de déplacer les fenêtres pour vous.

  3. Faites un clic droit et sélectionnez «Centrer les fenêtres sélectionnées» et vous avez terminé!

Captures d'écran ici .

1
user199343

Dans certains cas, même si vous avez plusieurs écrans sur le site distant, vous n’y avez peut-être pas accès depuis votre site. Les raccourcis clavier ne fonctionneront pas car vous n’avez plus accès à aucune vue qui ne figure pas à l’écran.

Dans ce cas, si vous pouvez ouvrir des instances supplémentaires de l'application, faites-le. Les premières occurrences apparaîtront presque certainement dans la barre des tâches sous forme de fenêtres fantômes supplémentaires. Continuez comme ça. Ils finiront par peupler la vue principale. Utilisez ensuite l’icône de la barre des tâches pour cliquer avec le bouton droit de la souris et fermer les instances hors écran. Une fois qu’AUCUNE instance hors écran n’a été ouverte, fermez celles de l’écran principal. La prochaine fois que vous ouvrirez cette application, celle-ci apparaîtra sur l'écran principal et non "hors caméra".

1
Greg Mayer

Sélectionnez la fenêtre (par exemple, en utilisant Alt+Tab). Puis maintenez Alt+F7 et déplacez la fenêtre avec les touches fléchées. Terminé.

Parfois, il est difficile de savoir aveuglément où se trouve la fenêtre cachée (et donc comment la déplacer vers l'écran). Des animations lors de la sélection de la fenêtre peuvent être utiles. En raison de ma configuration (j’utilise parfois un deuxième écran au-dessus de l’écran de mon ordinateur portable), les fenêtres hors écran sont généralement affichées en dessous. En portant Alt+F7+Up les amène donc à la vue.

1
Georg Jung

J'ai eu le même problème avec Winamp. La seule solution (insatisfaisante) que j'ai trouvée jusqu'à présent: changer la résolution de l'écran en une résolution différente

Thomas

1
Thomas

Vous pouvez également utiliser UltraMon (non graphique, Windows, interface graphique) pour configurer un raccourci clavier permettant de déplacer une fenêtre vers le moniteur suivant ou précédent.

enter image description here

0
Franck Dernoncourt

De Déplacez une fenêtre vers le moniteur inférieur/supérieur avec un raccourci sous Windows by Tymric :

J'ai écrit un script AHK.

Usage:

Win + Alt + Arrow: Déplacez la fenêtre active sur le moniteur dont la direction est indiquée par la flèche. Notez que cela peut entraîner le déplacement de votre fenêtre en dehors de l'écran si vous essayez de monter à partir du moniteur 2 ou directement du moniteur 3 dans votre configuration. Je vais le mettre à jour dans le futur.

Win + Alt + Number: Déplace la fenêtre active vers le numéro de moniteur donné

#Persistent

SysGet, MonitorCount, MonitorCount


#!Up::
  GoSub CalculateDisplacement
  WinMove, A, , %xPos%, %displaceYneg%
  return
#!Down::
  GoSub CalculateDisplacement
  WinMove, A, , %xPos%, %displaceYpos%
  return
#!Left::
  GoSub CalculateDisplacement
  WinMove, A, , %displaceXneg%, %yPos%
  return
#!Right::
  GoSub CalculateDisplacement
  WinMove, A, , %displaceXpos%, %yPos%
  return

#!1::
  GoSub CalculateDisplacement
  WinMove, A, , %xPosOn1%, %yPosOn1%
  return

#!2::
  if (MonitorCount > 1) {
    GoSub CalculateDisplacement
    WinMove, A, , %xPosOn2%, %yPosOn2%
  }
  return

#!3::
  if (MonitorCount > 2) {
    GoSub CalculateDisplacement
    WinMove, A, , %xPosOn3%, %yPosOn3%
  }
  return

#!4::
  if (MonitorCount > 3) {
    GoSub CalculateDisplacement
    WinMove, A, , %xPosOn4%, %yPosOn4%
  }
  return

#!5::
  if (MonitorCount > 4) {
    GoSub CalculateDisplacement
    WinMove, A, , %xPosOn5%, %yPosOn5%
  }
  return

#!6::
  if (MonitorCount > 5) {
    GoSub CalculateDisplacement
    WinMove, A, , %xPosOn6%, %yPosOn6%
  }
  return

#!7::
  if (MonitorCount > 6) {
    GoSub CalculateDisplacement
    WinMove, A, , %xPosOn7%, %yPosOn7%
  }
  return

#!8::
  if (MonitorCount > 7) {
    GoSub CalculateDisplacement
    WinMove, A, , %xPosOn8%, %yPosOn8%
  }
  return

#!9::
  if (MonitorCount > 8) {
    GoSub CalculateDisplacement
    WinMove, A, , %xPosOn9%, %yPosOn9%
  }
  return


CalculateDisplacement:
  WinGetPos, xPos, yPos, , , A
  Loop, %MonitorCount% {
    SysGet, MonitorDimension, Monitor, %A_Index%
    if (xPos > MonitorDimensionLeft and xPos < MonitorDimensionRight and yPos < MonitorDimensionBottom and yPos > MonitorDimensionTop) {
      currentMonitor = %A_Index%
    }
  }
  SysGet, thisMonitor, Monitor, %currentMonitor%
  displaceXpos := xPos + thisMonitorRight - thisMonitorLeft
  displaceYpos := yPos + thisMonitorTop - thisMonitorBottom
  displaceXneg := xPos - thisMonitorRight + thisMonitorLeft
  displaceYneg := yPos - thisMonitorTop + thisMonitorBottom
  Loop, %MonitorCount% {
    SysGet, nextMonitor, Monitor, %A_Index%
    xPosOn%A_Index% := xPos - thisMonitorLeft + nextMonitorLeft
    yPosOn%A_Index% := yPos - thisMonitorTop + nextMonitorTop
  }
  return
0
Franck Dernoncourt

placez le curseur sur la barre des tâches ... cliquez avec le bouton droit de la souris sur la fenêtre d'affichage côte à côte ... pour afficher la fenêtre à l'écran ... et, enfin, ramener le curseur sur la barre des tâches, cliquez avec le bouton droit de la souris et sélectionnez Annuler la fenêtre d'affichage côte à côte ..

0
ravi21

Parfois, cela résolue:

  • Cliquez sur WinKey + P
  • Choisissez Extend ou une autre option et toutes les fenêtres seront en cascade. Déplacez la fenêtre souhaitée vers l'écran principal.
0
T.Todua

J'ai écrit un outil appelé Borderline qui déplacera automatiquement les fenêtres hors écran à l'écran lors de l'exécution. Vous devez l'exécuter quand vous en avez besoin (cela fonctionne mieux si vous lui attribuez un raccourci clavier ou si vous le placez dans le menu Démarrer), mais cela signifie également qu'il n'est pas toujours exécuté en arrière-plan.

0
jamesdlin