2010-10-08 34 views
2

J'ai actuellement un HTPC connecté à un plasma dans mon salon, et j'ai eu quelques problèmes avec la rétention d'image. Tout en naviguant sur le web, etc. pendant une longue période, je vais rencontrer le problème. Cependant, il semble qu'il devrait être relativement facile de configurer un script avec AutoHotKey pour redimensionner la fenêtre automatiquement sur une minuterie. Quelqu'un pourrait-il m'aider à démarrer sur un script pour accomplir cette tâche? (Également ouvert à d'autres idées)AutoHotKey - Redimensionner Windows

Merci!

+0

Redimensionner plusieurs fenêtres ou seulement une fenêtre particulière? Le déplacer aussi, ou juste le rendre plus grand/plus petit? –

Répondre

1

Je travaille sur le même problème. Voici un script qui s'ouvre et la calculatrice Windows en fonction de la taille de votre écran actuel. Je suis toujours en train de tout comprendre, mais peut-être que cela vous aidera à démarrer.

;This script opens and centers the calculator on your screen. 
#NoTrayIcon 
Run, calc.exe 
WinWait, Calculator 
WinGetPos,,, Width, Height, %WinTitle% 
WinMove, %WinTitle%,, (A_ScreenWidth/2)-(Width/2), (A_ScreenHeight/2)-(Height/2) 
Return 
5

J'ai créé il y a un scénario un certain temps que les fenêtres « » normalise, à savoir redimensionne, se déplace et effectue d'autres actions pour faire une confirmation de la fenêtre de ma préférence personnelle.

Chaque fois qu'une fenêtre s'affiche pour la première fois, elle est normalisée. S'il est fermé et rouvert, il est à nouveau normalisé. Ci-dessous est une version du script qui fonctionne et devrait répondre aux exigences de la question d'origine.

La version que j'utilise est beaucoup plus compliquée car elle a beaucoup plus de fonctionnalités, par ex. il prend en charge plusieurs moniteurs et redimensionne les fenêtres tout en tenant compte de la hauteur de la barre des tâches Windows. J'utilise le script pour agrandir les boîtes de dialogue Ouvrir/Enregistrer (elles sont trop petites par défaut). Je l'utilise également pour se connecter automatiquement à certains sites Web et applications.

; This script "normalizes" windows, i.e. resizes, moves, and performs other 
; actions to make a window confirm to my personal preference. 

SetTitleMatchMode, 2 

; Go into an infinite loop 
loop 
{ 
    ; Pause so other apps can execute. 250 milliseconds seems to work well. 
    Sleep, 250 

    ; If hotkeys are suspended for this script, then suspend all functionality 
    if A_IsSuspended 
     continue 

    ; We will build a unique window name using the window title and window handle. 
    ; Store each unique name in an array. 
    WinGet, HWND, ID, A 
    WinGetTitle, WindowTitle, A 
    WinGetClass, WindowClass, A 

    ; Remember the previous window we processed 
    WindowTitleCleanPrevious := WindowTitleClean 

    ; Only normalize windows that we haven't seen before. 
    ; If we haven't already normalized the window, we do 
    ; the normalize, then set a flag so we don't normalize the same window again. 

    ; Strip out all chars that may be invalid in an AHK variable name. 
    WindowTitleCleanTemp := StringRemoveAllNonAlphaNum(WindowTitle) 
    ; Variable names can be at most 254 chars, so truncate to less than that. 
    StringLeft, WindowTitleClean, WindowTitleCleanTemp, 230 

    ; Process the window if: 
    ; (1) It wasn't previously processed (i.e. not in our window-name list named WinList) 
    ; (2) And we aren't sitting on the same window during each loop. 
    if (WinList%HWND%%WindowTitleClean% != 1 and WindowTitleClean != WindowTitleCleanPrevious) 
    { 
     ; Get the window's position and size 
     WinGetPos, WinX, WinY, WinWidth, WinHeight, A 

     ; Is this an MS Word window? 
     if (WindowClass == "OpusApp") 
     { 
      ; Center the window and resize so it is 80% of the monitor width and 90% of height. 
      WinMove, A, , (A_ScreenWidth/2)-(WinWidth/2), (A_ScreenHeight/2)-(WinHeight/2), A_ScreenWidth * .8, A_ScreenHeight * .9 
     } 
     ; Is this the Calculator window? 
     else if (WindowClass == "SciCalc") 
     { 
      ; Center the window 
      WinMove, A, , (A_ScreenWidth/2)-(WinWidth/2), (A_ScreenHeight/2)-(WinHeight/2) 
     } 

     ; Set a flag indicating this window has been processed so it is 
     ; not processed again. 
     WinList%HWND%%WindowTitleClean% = 1 
    } 
} 


; --- Win+F5 will Reload this script --- 
~#F5::Reload 

; --- Win+Escape will Pause this script --- 
~#Escape::Suspend, Toggle 

; --- Win+Alt+Escape will Exit this script --- 
; Close this script 
~#!Escape::ExitApp 



; =========================================================================== 
; Removes all non-alphabetic and non-numeric characters from the given 
; string. The resulting string is returned. 
; =========================================================================== 
StringRemoveAllNonAlphaNum(SourceString) 
{ 
    StringSplit, SplitSourceString, SourceString 

    OutputString = 
    Loop, %SplitSourceString0% 
    { 
     Char := SplitSourceString%A_Index% 
     if (Char >= "a") and (Char <= "z") 
      OutputString := OutputString Char 
     else if (Char >= "0") and (Char <= "9") 
      OutputString := OutputString Char 
    } 

    return OutputString 
}