skrót klawiaturowy w Windows 7 do środkowego okna

18

Uważam, że strzałka w lewo-w lewo i strzałka w prawo-w lewo są naprawdę przydatne w systemie Windows 7, aby okno zajmowało odpowiednio 50% lewej lub prawej strony ekranu. Czy jest jednak jakieś polecenie, które sprawi, że okno zajmie 50% ekranu i zostanie wyśrodkowane? Nawet jeśli nie dostosowuje rozmiaru okna, czy istnieje skrót klawiaturowy, aby okno wyśrodkowało się pionowo i poziomo? Dzięki.

Sarah Vessels
źródło

Odpowiedzi:

3

Powinieneś sprawdzić WinSplit Revolution ; ma to, czego potrzebujesz i jest konfigurowalny.

alternatywny tekst

Tamara Wijsman
źródło
Wygląda na to, że po 3 kliknięciach środkowego przycisku w oknie WinSplit moje skupione okno rozciąga się i wypełnia całą wysokość monitora, co jest w porządku, i jest wyśrodkowany w poziomie. :)
Sarah Vessels
13

Windows + klawisze strzałek są tu bardzo przydatne.

  • (Windows)+ ← (Left) i + → (Right) przechodź, przechodząc w lewo lub w prawo 50% ekranu i przywracając okno do jego pierwotnego rozmiaru i położenia.
  • + ↑ (Up)maksymalizuje okno.
  • + ↓ (Down) przywraca okno, jeśli jest zmaksymalizowane, i minimalizuje je w przeciwnym razie.
wbeard52
źródło
2
To chyba nie zrobiło tego dla mnie. Wygląda na to, że minimalizuje moje okno lub przywraca je, jeśli okno jest zmaksymalizowane.
Sarah Vessels
2
Na moim komputerze, podwójnym monitorze, mogę kliknąć Win-Left, a na tym ekranie zostanie przesunięty w lewo o 50%. Jeśli nadal klikam Win-Left, to przejdzie w prawo o 50% na drugim ekranie, następnie wyśrodkuje i wreszcie w lewo na drugim ekranie. Win-Right robi odwrotnie
wbeard52
1
Win-Down jest po prostu błędny. Przywraca okno z zmaksymalizowanego lub minimalizuje je (jeśli zostało już przywrócone). Z oknem nic nie zrobi.
Joey
3
@ wbeard52: Właśnie kilkakrotnie wypróbowałem Win-Left i cyklicznie przechodził przez 50% po lewej stronie ekranu, 50% po prawej stronie ekranu i to, jak pierwotnie było moje okno (nie wyśrodkowane, małe).
Sarah Vessels
2
Kilkukrotne naciśnięcie klawisza Win-Left lub Win-Right po prostu przełącza okno po lewej / prawej stronie 50% dostępnych monitorów, a następnie umieszcza je z powrotem tam, gdzie było wcześniej. W żaden sposób nie wyśrodkowuje okna.
dgw
13

To nie jest dokładnie do centrowania, ale pozwala łatwo przesuwać okno w lewo i prawo (oraz w górę i w dół).

  1. Skoncentruj okno.
  2. Naciśnij Alt+ Space.
  3. Naciśnij M(dla „Przenieś”).
  4. Użyj klawiszy strzałek, aby przenieść okno dokładnie tam, gdzie chcesz.
  5. Naciśnij Enterpo zakończeniu.
ddinchev
źródło
1
To rozwiązanie nie wymaga instalowania dodatkowego oprogramowania. To może nie być dokładne rozwiązanie, ale myślę, że wystarczy, aby wykonać zadanie
afuzzyllama,
Działa to tylko wtedy, gdy okno nie jest zmaksymalizowane.
TylerH
@TylerH: to prawda. Wymaga to jednak naciśnięcia klawisza Windows + prawo (aby ustawić okno w 50% prawej pozycji), a następnie postępuj zgodnie z instrukcjami w tej odpowiedzi, aby przesunąć go w lewo.
Rasmus Larsen
5

Sugerowałbym użycie AutoHotkey .
Przykładowy skrypt, który robi dokładnie to, o co prosiłeś, został już dostarczony w odpowiedzi na inne pytanie .
Oto kod skryptu:

#!Up::CenterActiveWindow() ; if win+alt+↑ is pressed

CenterActiveWindow()
{
    ; Get the window handle from de active window.
    winHandle := WinExist("A")

    VarSetCapacity(monitorInfo, 40)
    NumPut(40, monitorInfo)

    ; Get the current monitor from the active window handle.
    monitorHandle := DllCall("MonitorFromWindow", "uint", winHandle, "uint", 0x2)
    DllCall("GetMonitorInfo", "uint", monitorHandle, "uint", &monitorInfo) 

    ; Get WorkArea bounding coordinates of the current monitor.
    A_Left   := NumGet(monitorInfo, 20, "Int")
    A_Top    := NumGet(monitorInfo, 24, "Int")
    A_Right  := NumGet(monitorInfo, 28, "Int")
    A_Bottom := NumGet(monitorInfo, 32, "Int")

    ; Calculate window coordinates.
    winW := (A_Right - A_Left) * 0.5 ; Change the factor here to your desired width.
    winH := A_Bottom
    winX := A_Left + (winW / 2)
    winY := A_Top

    WinMove, A,, winX, winY, winW, winH
}

Dokonałem niewielkiej korekty, aby dolna część okna nie przechodziła poniżej paska zadań, i zmieniłem wartość windowWidthz 0,7 na 0,5.

Edycja : teraz pracuje z wieloma monitorami i wykorzystuje obszar roboczy dla górnych i dolnych wartości.

Na marginesie, WinSplit Revolution został wycofany i zastąpiony płatną aplikacją o nazwie MaxTo.
Oprócz tego, że jest bardzo wydajny i obejmuje znacznie więcej przypadków użycia, AutoHotkey jest również darmowym i otwartym oprogramowaniem.

vctls
źródło
1
Prawie świetnie ... Z wyjątkiem jednego poważnego problemu. W przypadku wielu rozszerzonych monitorów zawsze przenosi okno z drugiego monitora na główny. Wszelkie pomysły, jak to naprawić? WinMove nie wydaje się mieć żadnych dodatkowych parametrów.
DKroot
@DKroot Będę musiał spróbować z drugim ekranem. Używałem tego tylko na jednym ultrawidoku. Oto, co mówi dokument w WinMove: «Dozwolone są wartości ujemne dla współrzędnych xiy w celu obsługi systemów wielomonitorowych i umożliwienia całkowitego przesunięcia okna poza ekran.» Na forum są przykłady skryptów z wieloma monitorami, ale staje się to bardziej skomplikowane: autohotkey.com/board/topic/…
vctls
Dziękuję bardzo za link! Udało mi się połączyć Twój skrypt i skrypt połączony w jeden działający idealnie. (Połączony skrypt nie zmienia rozmiaru, dlatego nie działa np. W zmaksymalizowanych oknach). Skrypt jest za długi, aby można go było zamieścić w komentarzach. Czy masz coś przeciwko, żebym opublikował to jako osobną odpowiedź?
DKroot
Kolejna uwaga dotycząca testowania skryptu: co ciekawe, w konfiguracji z 3 monitorami, np. # 1 main, # 2 i # 3, działa dobrze na # 1 i # 3, ale przenosi okna z # 2 na # 1.
DKroot
1
To dziwne. Zaktualizowałem go, aby działał na wielu monitorach. Starałem się, aby był on jak najkrótszy i na możliwie jak najściślejszy temat, ale możesz wybrać wersję Deluxe, taką jak na forum;)
vctls