; ; AutoHotkey Version: 1.x ; Language: English ; Platform: WinNT>= ; Author: Ajasja Ljubetič (ajasja.ljubetic@gmail.com) ; ; Script Function: ; Manages VMD windows (brings to front, positions and resizes itd...) ; Defines various hotkeys (sleep, google) #SingleInstance force #NoEnv ; Recommended for performance and compatibility with future AutoHotkey releases. SendMode Input ; Recommended for new scripts due to its superior speed and reliability. SetWorkingDir %A_ScriptDir% ; Ensures a consistent starting directory. ;Mark windows you want to manage ;this could also be laoded form the ini VMD_WCount = 5 VMD_W1:="VMD console ahk_class ConsoleWindowClass" ; console window VMD_W2:="ahk_class VMD" ; OpenGL window VMD_W3:="VMD Main ahk_class FLTK" ; Main window VMD_W4:="Graphical Representations ahk_class FLTK" ; Graphical representations VMD_W5:="VMD TkConsole ahk_class TkTopLevel" ; TkConsole ;Add the VMD windows to a group Loop, %VMD_WCount% { GroupAdd, VMD, % VMD_W%A_Index% } Gosub, load_positions #v:: IfWinExist, %VMD_W1% { IfWinNotExist %VMD_W5% Gosub, open_console Gosub, restore_positions Gosub, bring_to_front } else { ;MsgBox, Running VMD Run vmd WinWait %VMD_W1% SendInput menu tkcon on{Enter} WinWait %VMD_W5% ; tkconsole Gosub, restore_positions } return ; save VMD window positions !#v:: ; If VMD running IfWinExist, %VMD_W1% { Gosub, save_positions MsgBox, Positions saved } return !#t:: i = 1 tmp := MsgBox, % "Wincount " . VMD_WCount . ", (i=" . i . " ) first window" . VMD_W%i% return ^#v:: ; If VMD running WinGet, min_state , MinMax, %VMD_W1% If min_state = -1 ;minimized WinRestore ahk_group VMD else WinMinimize ahk_group VMD return ; put system to sleep #w::DllCall("PowrProf\SetSuspendState", "int", 0, "int", 0, "int", 0) save_positions: Loop, %VMD_WCount% { vmd_tmp := VMD_W%A_Index% WinGetPos X%A_Index%, Y%A_Index%, Width%A_Index%, Height%A_Index%, %vmd_tmp% IniWrite % X%A_Index%, VMD_positions.ini, %vmd_tmp%, X IniWrite % Y%A_Index%, VMD_positions.ini, %vmd_tmp%, Y IniWrite % Width%A_Index%, VMD_positions.ini, %vmd_tmp%, Width IniWrite % Height%A_Index%, VMD_positions.ini, %vmd_tmp%, Height } return load_positions: Loop, %VMD_WCount% { vmd_tmp := VMD_W%A_Index% IniRead, X%A_Index%, VMD_positions.ini, %vmd_tmp%, X IniRead Y%A_Index%, VMD_positions.ini, %vmd_tmp%, Y IniRead Width%A_Index%, VMD_positions.ini, %vmd_tmp%, Width IniRead Height%A_Index%, VMD_positions.ini, %vmd_tmp%, Height } return restore_positions: Loop, %VMD_WCount% { vmd_tmp := WinMove, % VMD_W%A_Index%,, % X%A_Index%, % Y%A_Index%, % Width%A_Index%, % Height%A_Index% } return bring_to_front: Loop, %VMD_WCount% { WinActivate % VMD_W%A_Index% } ;WinMinimize ahk_group VMD ;WinRestore ahk_group VMD return open_console: WinActivate %VMD_W1% SendInput menu tkcon on{Enter} return