Windows 7 Forums
Welcome to Windows 7 Forums. Our forum is dedicated to helping you find support and solutions for any problems regarding your Windows 7 PC be it Dell, HP, Acer, Asus or a custom build. We also provide an extensive Windows 7 tutorial section that covers a wide range of tips and tricks.


Windows 7: Batch/VBS File, 'Bring To Front' help

28 Mar 2011   #1
JDobbsy1987

Windows 8.1 Pro x64
 
 
Batch/VBS File, 'Bring To Front' help

Hi,

Can someone help me with this as i really can't think of how to do it, a quick Google search hasn't helped either and the only other place i could think of that is as useful as Google is... Seven Forums

I would like a Batch or VBS file to do the following (or something that will at least do it)

I have 1 PC with 1 Monitor...
I have 2 browser windows running full screen...

I would like to open/display/bring them to front alternately automatically.
How can this be done?

Example in readable form, well i hope:

Code:
:Start
Bring to front 
"browser window 1"
Pause=30seconds

Bring to front 
"browser window 2"
Pause=30seconds
GOTO :Start

Regards,
JDobbsy1987


My System SpecsSystem Spec
.
28 Mar 2011   #2
FliGi7

XP / Win7 x64 Pro
 
 

Unless they are different browsers, it could be impossible to program something that would be able to discern "window 1" and "window 2" across many different browsing sessions.

Can you explain more of why you'd like to do this so we can think of other ways to possibly address it?
My System SpecsSystem Spec
28 Mar 2011   #3
Mike Connor

Several, including Windows 7 x64 Ultimate
 
 

Get this;

AutoHotkey - Free Mouse and Keyboard Macro Program with Hotkeys and AutoText

you can do what you want with it and it's a lot easier than VB.

This will do what you want,

1 Hour Software by Skrommel - DonationCoder.com

<http://www.donationcoder.com/Software/Skrommel/index.html#WinWarden>

Some other nice scripts there as well, all in Autohotkey.

If you click on the title or the "Diskette" icon, then the compiled executable will be downloaded.

If you click on the green "H" icon,



you get the complete source code for the script, and can then modify it as you please. This is of course a very long and complex script.

Code:
;WinWarden.ahk
; Automatically control how to display a window.
; Move, maximize, minimize, restore, enable, disable, hide, show,
; ontop, bottom, alwaysontop, clip, transparent, transparent color,
; move relative to another window, stick to the edge of the screen,
; roll up and down, morph wide/tall/zoom in/zoom out.
;Skrommel @2005
;Tim Morck @2006

#Persistent
#SingleInstance,Force
SetBatchLines,-1
SetTitleMatchMode,2
DetectHiddenWindows,On
CoordMode,Mouse,Screen
CoordMode,ToolTip,Screen
SetWinDelay,0
AutoTrim,On

applicationname=WinWarden

Hotkey,!R,ROLLUP ;! - Alt key
Hotkey,!Up,ROLLUP ;there are also ^ - Ctrl, # - Win, + - Shift
Hotkey,!D,ROLLDOWN
Hotkey,!Down,ROLLDOWN ;if you change the symbols here, change them in CHECKHOTKEYS, too
Hotkey,!W,WIDE
Hotkey,!T,TALL
Hotkey,!I,ZOOMIN
Hotkey,!O,ZOOMOUT
Hotkey,!E,REMEMBER
Hotkey,!U,UNDO
Hotkey,!A,AONTOP
Hotkey,!B,TOBOTTOM
Hotkey,!S,SETTINGS
Hotkey,!H,HELP

Hotkey,!Numpad7,TOPLEFT
Hotkey,!Numpad8,TOPCENTER
Hotkey,!Numpad9,TOPRIGHT
Hotkey,!Numpad4,MIDDLELEFT
Hotkey,!Numpad5,CENTER
Hotkey,!Numpad6,MIDDLERIGHT
Hotkey,!Numpad1,BOTTOMLEFT
Hotkey,!Numpad2,BOTTOMCENTER
Hotkey,!Numpad3,BOTTOMRIGHT

Hotkey,^!Numpad4,LEFTHALF
Hotkey,^!Numpad6,RIGHTHALF
Hotkey,^!Numpad8,TOPHALF
Hotkey,^!Numpad2,BOTTOMHALF
Hotkey,^!Numpad7,TOPLEFTQTR
Hotkey,^!Numpad9,TOPRIGHTQTR
Hotkey,^!Numpad1,BOTTOMLEFTQTR
Hotkey,^!Numpad3,BOTTOMRIGHTQTR

Menu,Placemenu,Add,Top Left,TOPLEFT
Menu,Placemenu,Add,Top Center,TOPCENTER
Menu,Placemenu,Add,Top Right,TOPRIGHT
Menu,Placemenu,Add,Middle Left,MIDDLELEFT
Menu,Placemenu,Add,Middle Right,MIDDLERIGHT
Menu,Placemenu,Add,Bottom Left,BOTTOMLEFT
Menu,Placemenu,Add,Bottom Center,BOTTOMCENTER
Menu,Placemenu,Add,Bottom Right,BOTTOMRIGHT

Menu,Covermenu,Add,&Left Half,LEFTHALF
Menu,Covermenu,Add,&Right Half,RIGHTHALF
Menu,Covermenu,Add,&Top Half,TOPHALF
Menu,Covermenu,Add,&Bottom Half,BOTTOMHALF
Menu,Covermenu,Add,
Menu,Covermenu,Add,Top Left,TOPLEFTQTR
Menu,Covermenu,Add,Top Right,TOPRIGHTQTR
Menu,Covermenu,Add,Bottom Left,BOTTOMLEFTQTR
Menu,Covermenu,Add,Bottom Right,BOTTOMRIGHTQTR

Menu,Morphmenu,Add,&Wide,WIDE
Menu,Morphmenu,Add,&Tall,TALL
Menu,Morphmenu,Add,
Menu,Morphmenu,Add,Zoom &In,ZOOMIN
Menu,Morphmenu,Add,Zoom &Out,ZOOMOUT

If A_OSVersion not in WIN_95,WIN_98,WIN_NT
   transparencyon=Y
Else
   transparencyon=N

If transparencyon=Y
{
   Hotkey,!0,TRANSPHKEY
   Hotkey,!1,TRANSPHKEY
   Hotkey,!2,TRANSPHKEY
   Hotkey,!3,TRANSPHKEY
   Hotkey,!4,TRANSPHKEY
   Hotkey,!5,TRANSPHKEY
   Hotkey,!6,TRANSPHKEY
   Hotkey,!7,TRANSPHKEY
   Hotkey,!8,TRANSPHKEY
   Hotkey,!9,TRANSPHKEY
   Menu,Transpmenu,Add,&Off,TRANSPMENU
   Menu,Transpmenu,Add,&10`%,TRANSPMENU
   Menu,Transpmenu,Add,&20`%,TRANSPMENU
   Menu,Transpmenu,Add,&30`%,TRANSPMENU
   Menu,Transpmenu,Add,&40`%,TRANSPMENU
   Menu,Transpmenu,Add,&50`%,TRANSPMENU
   Menu,Transpmenu,Add,&60`%,TRANSPMENU
   Menu,Transpmenu,Add,&70`%,TRANSPMENU
   Menu,Transpmenu,Add,&80`%,TRANSPMENU
   Menu,Transpmenu,Add,&90`%,TRANSPMENU
}

SysGet,captionheight,29
SysGet,monitor,MonitorWorkArea
hotkeys=Off
interval=500
topoffset=0
bottomoffset=0
leftoffset=0
rightoffset=0
IfExist,%applicationname%2.ini
{
   IniRead,hotkeys,%applicationname%2.ini,Parms,Hotkeys
   If not (hotkeys="On" or hotkeys="Off")
     IniWrite,Off,%applicationname%2.ini,Parms,Hotkeys

   IniRead,interval,%applicationname%2.ini,Parms,Interval
   If interval is not digit
   {
     IniWrite,500,%applicationname%2.ini,Parms,Interval
     interval=500
   }
   If interval<100
   {
     IniWrite,100,%applicationname%2.ini,Parms,Interval
     interval=100
   }

   IniRead,leftoffset,%applicationname%2.ini,Parms,Leftoffset
   If leftoffset is not digit
   {
     IniWrite,0,%applicationname%2.ini,Parms,Leftoffset
     leftoffset=0
   }
   If leftoffset>200
   {
     IniWrite,200,%applicationname%2.ini,Parms,Leftoffset
     leftoffset=0
   }

   IniRead,rightoffset,%applicationname%2.ini,Parms,Rightoffset
   If rightoffset is not digit
   {
     IniWrite,0,%applicationname%2.ini,Parms,Rightoffset
     rightoffset=0
   }
   If rightoffset>200
   {
     IniWrite,200,%applicationname%2.ini,Parms,Rightoffset
     rightoffset=0
   }

   IniRead,topoffset,%applicationname%2.ini,Parms,Topoffset
   If topoffset is not digit
   {
     IniWrite,0,%applicationname%2.ini,Parms,Topoffset
     topoffset=0
   }
   If topoffset>200
   {
     IniWrite,200,%applicationname%2.ini,Parms,Topoffset
     topoffset=0
   }

   IniRead,bottomoffset,%applicationname%2.ini,Parms,Bottomoffset
   If bottomoffset is not digit
   {
     IniWrite,0,%applicationname%2.ini,Parms,Bottomoffset
     bottomoffset=0
   }
   If bottomoffset>200
   {
     IniWrite,200,%applicationname%2.ini,Parms,Bottomoffset
     bottomoffset=0
   }

}
monitorLeft:=monitorLeft+leftoffset
monitorRight:=monitorRight-rightoffset
monitorTop:=monitorTop+topoffset
monitorBottom:=monitorBottom-bottomoffset
monitorWidth:=monitorRight-monitorLeft
monitorHeight:=monitorBottom-monitorTop

createdids=
activeids=
maxedids=
deactivatedids=
prevmodtime=00000000000000
actwinid:=WinActive("A")
Menu,Tray,Add,&Always on top,AONTOP ;need to do this for first execute of GETACTAONTOP
Gosub,GETACTAONTOP

SetTimer,MAIN,%interval%
Return


MAIN:
Gosub,READINI ;when the .ini file's Modified time stamp changes,
; ;READINI reads it and then calls TRAYMENU,
; ;since custom menu items may have changed

newactwinid:=WinActive("A")
If newactwinid<>0x0
IfNotInString,newactwinid,%actwinid%
{
   WinGetClass,newactwinclass,ahk_id %newactwinid%
   If newactwinclass not in Progman,Shell_TrayWnd,AutoHotkey
   {
     actwinid=%newactwinid% ;get the new active window ID for menu items
     Gosub,GETACTAONTOP
   }
}

type=Auto
WinGet,allwinids,List,,,Program Manager
Loop,%allwinids%
{
   StringTrimRight,winid,allwinids%A_Index%,0

   lineindex=0
   Loop,%autocount%
   {
     lineindex++

     If titlematch_Auto_%lineindex%=C
     {
       WinGetClass,sclass,ahk_id %winid%
       If sclass<>% title_Auto_%lineindex% ;try to find class
         Continue
     }
     Else
     {
       WinGetTitle,stitle,ahk_id %winid%
       If titlematch_Auto_%lineindex%=S
       {
         IfNotInString,stitle,% title_Auto_%lineindex% ;try to find string in title
           Continue
       }
       Else
       {
         If titlematch_Auto_%lineindex%=F
           StringLeft,stitle,stitle,titlelength_Auto_%lineindex% ;compare first characters in title
         Else
           StringRight,stitle,stitle,titlelength_Auto_%lineindex% ;compare last characters in title
         If stitle<>% title_Auto_%lineindex%
           Continue
       }
     }

     WinGetText,stext,ahk_id %winid%
     IfNotInString,stext,% text_Auto_%lineindex%
       Continue

     If mode_Auto_%lineindex%=Inside
     {
       MouseGetPos,hmx,hmy,hid
       WinGetTitle,htitle,ahk_id %hid%
       WinGetPos,hwx,hwy,hwidth,hheight,ahk_id %hid%

       IfNotInString,htitle,% title_Auto_%lineindex%
         Continue

       hwidth+=%hwx%
       hheight+=%hwy%

       If hmx>=%hwx%
       If hmx<=%hwidth%
       If hmy>=%hwy%
       If hmy<=%hheight%
         Gosub,INSIDE
     }

     If mode_Auto_%lineindex%=Outside
     {
       MouseGetPos,hmx,hmy,hid
       WinGetTitle,htitle,ahk_id %hid%

       IfNotInString,htitle,% title_Auto_%lineindex%
         Gosub,OUTSIDE
     }

     IfWinExist,ahk_id %winid%
     {
       If mode_Auto_%lineindex%=Creating
       {
         IfNotInString,createdids,%winid%
         {
           createdids=%createdids%`n%winid%
           Gosub,CREATING
         }
       }
     }
     Else
       StringReplace,createdids,createdids,`n%winid%

     Gosub,GETMAXIMIZE
     If smaximize=1
     {
       If mode_Auto_%lineindex%=Maximizing
       {
         IfNotInString,maxedids,%winid%
         {
           maxedids=%maxedids%`n%winid%
           Gosub,MAXIMIZING
         }
       }
       Else
       If mode_Auto_%lineindex%=Maximized
       {
         Gosub,MAXIMIZED
       }
     }
     Else
       StringReplace,maxedids,maxedids,`n%winid%

     IfWinActive,ahk_id %winid%
     {
       If mode_Auto_%lineindex%=Activating
       {
         IfNotInString,activeids,%winid%
         {
           activeids=%activeids%`n%winid%
           Gosub,ACTIVATING
         }
       }
       Else
       If mode_Auto_%lineindex%=Active
       {
         Gosub,ACTIVE
       }
     }
     Else
       StringReplace,activeids,activeids,`n%winid%

     IfWinNotActive,ahk_id %winid%
     {
       If mode_Auto_%lineindex%=Deactivating
       {
         IfNotInString,deactivatedids,%winid%
         {
           deactivatedids=%deactivatedids%`n%winid%
           Gosub,DEACTIVATING
         }
       }
       Else
       If mode_Auto_%lineindex%=Deactivated
       {
         Gosub,DEACTIVATED
       }
     }
     Else
       StringReplace,deactivatedids,deactivatedids,`n%winid%
   }
}
Return

GETACTAONTOP:
WinGet,xstyle,ExStyle,ahk_id %actwinid%
If (xstyle & 0x8) ;0x8 is WS_EX_TOPMOST
{
   activeaontop=Y
   Menu,Tray,Check,&Always on top
}
Else
{
   activeaontop=N
   Menu,Tray,Uncheck,&Always on top
}
Return

GETMAXIMIZE:
WinGet,state,MinMax,ahk_id %winid%
smaximize=0
If state=1
   smaximize=1
sminimize=0
If state=-1
   sminimize=1
srestore=0
If state=0
   srestore=1
Return


READINI:
IfNotExist,%applicationname%2.ini
{
   inifile=;%applicationname%2.ini
   inifile=%inifile%`n`;Automatically control how to display a window
   inifile=%inifile%`n`;Move, maximize, minimize, restore, enable, disable, hide, show, ontop, bottom,
   inifile=%inifile%`n`;alwaysontop, clip, transparent, transparent color, move relative to another window,
   inifile=%inifile%`n`;stick to the edge of the screen, roll up and down, morph wide/tall/zoom in/zoom out.
   inifile=%inifile%`n`;Skrommel @2005
   inifile=%inifile%`n`;Tim Morck @2006
   inifile=%inifile%`n`;
   inifile=%inifile%`n`;If you have been using a previous version of %applicationname% and are wondering what
   inifile=%inifile%`n`;happened to the parameters you set up, they are probably still in %applicationname%.ini.
   inifile=%inifile%`n`;This is %applicationname%2.ini. Just copy them from there and paste them into here
   inifile=%inifile%`n`;and you will be all set (except see title matching just below). It is necessary
   inifile=%inifile%`n`;to have %applicationname%2.ini to provide new global parameters and documentation
   inifile=%inifile%`n`;of new features.
   inifile=%inifile%`n`;
   inifile=%inifile%`n`;
   inifile=%inifile%`n`; 1: mode           Inside,Outside,Creating,Activating,Active,Maximizing,Maximized,
   inifile=%inifile%`n`;                      Deactivating,Deactivated
   inifile=%inifile%`n`;                    What mode of the window to control
   inifile=%inifile%`n`;                     Inside is used when the mouse is inside the window
   inifile=%inifile%`n`;                     Outside is used when the mouse is outside the window
   inifile=%inifile%`n`;                     Creating is used when the window is created
   inifile=%inifile%`n`;                     Activating is used every time the window is activated
   inifile=%inifile%`n`;                     Active is used for as long as the windows is active, but not aximized
   inifile=%inifile%`n`;                     Maximizing is used every time the window is maximized
   inifile=%inifile%`n`;                     Maximized is used for as long as the window is maximized
   inifile=%inifile%`n`;                     Deactivating is used every time another window is activated
   inifile=%inifile%`n`;                     Deactivated is used for as long as the window is inactive
   inifile=%inifile%`n`;
   inifile=%inifile%`n`;                     Menu sets up custom menu items in the system tray icon menu that can
   inifile=%inifile%`n`;                      be applied manually to the active window, unlike the automatic modes
   inifile=%inifile%`n`;                      above
   inifile=%inifile%`n`;                       -does not use #'s 3, 4(except WholeScreen), and 5
   inifile=%inifile%`n`;                       -can be all before, all after, or interspersed with other modes
   inifile=%inifile%`n`;                       -appear in menu in same order as in this file
   inifile=%inifile%`n`; 2: title          abc
   inifile=%inifile%`n`;                    Text in the title of the window to control
   inifile=%inifile%`n`;                     Auto: wildcard match instead if * is last or first character
   inifile=%inifile%`n`;                       titletext* - match on first characters only
   inifile=%inifile%`n`;                       *titletext - match on last characters only
   inifile=%inifile%`n`;                      or match class instead of title if text between forward slashes(no*)
   inifile=%inifile%`n`;                       /titletext/ - class of the window to control
   inifile=%inifile%`n`;                       /#32770/ - class of Windows 98 open/save,control panel,+ for example
   inifile=%inifile%`n`;                      note: order of lines matters, only first line to match is applied`;
   inifile=%inifile%`n`;                            so put more specific matches first to make them exceptions
   inifile=%inifile%`n`;                     Menu: menu item text (Spacer for menu spacer)
   inifile=%inifile%`n`;                      You may put character & before unique selection character
   inifile=%inifile%`n`;                      you want to underline - not a,b,c,d,e,h,k,m,p,q,r,s,u
   inifile=%inifile%`n`; (in use, these will not be underlined)
   inifile=%inifile%`n`; 3: text           abc
   inifile=%inifile%`n`;                    Text inside the window to control
   inifile=%inifile%`n`; 4: otherwintitle  abc,WholeScreen
   inifile=%inifile%`n`;                    Text in the titlebar of the window to move relative to
   inifile=%inifile%`n`;                     WholeScreen is the whole screen including toolbars
   inifile=%inifile%`n`;                     Leave empty to move relative to the desktop
   inifile=%inifile%`n`; 5: otherwintext   abc
   inifile=%inifile%`n`;                    Text inside the window to move relative to
   inifile=%inifile%`n`; 6: x              x,x`%,-Left,+Left,-Center,Center,+Center,-Right,+Right,Caption
   inifile=%inifile%`n`;                   (except Menu: ignores 'outside' positions -Left,+Right)
   inifile=%inifile%`n`;                    Where to put the left edge of the window
   inifile=%inifile%`n`;                     a number followed by a `% moves in percentage of the other window
   inifile=%inifile%`n`;                     -Left moves the window to the left of the Left edge of the other window
   inifile=%inifile%`n`;                     +Left moves the window to the right of the Left edge of the other window
   inifile=%inifile%`n`;                     -Center moves the window to the left of the Center line of the other window
   inifile=%inifile%`n`;                     Center moves the window to the horizontal Center of the other window
   inifile=%inifile%`n`;                     +Center moves the window to the right of the Center line of the other window
   inifile=%inifile%`n`;                     -Right moves the window to the left of the Right edge of the other window
   inifile=%inifile%`n`;                     +Right moves the window to the right of the Right edge of the other window
   inifile=%inifile%`n`;                     Caption moves the window right of the Right edge of the other window
   inifile=%inifile%`n`;                       by a distance equal to the height of the Caption (title) bar
   inifile=%inifile%`n`;                       - when used with y=Caption, they work like Cascade
   inifile=%inifile%`n`; 7: y              x,x`%,-Top,+Top,-Center,Center,+Center,-Bottom,+Bottom,Caption
   inifile=%inifile%`n`;                   (except Menu: ignores 'outside' positions -Top,+Bottom)
   inifile=%inifile%`n`;                    Where to put the top edge of the window
   inifile=%inifile%`n`;                     a number followed by a `% moves in percentage of the other window
   inifile=%inifile%`n`;                     -Top moves the window above the Top edge of the other window
   inifile=%inifile%`n`;                     +Top moves the window below the Top edge of the other window
   inifile=%inifile%`n`;                     -Center moves the window above the Center line of the other window
   inifile=%inifile%`n`;                     Center moves the window to the vertical Center of the other window
   inifile=%inifile%`n`;                     +Center moves the window below the Center line of the other window
   inifile=%inifile%`n`;                     -Bottom moves the window above the Bottom edge of the other window
   inifile=%inifile%`n`;                     +Bottom moves the window below the Bottom edge of the other window
   inifile=%inifile%`n`;                     Caption moves the window below the Caption (title) bar of the other window
   inifile=%inifile%`n`; 8: width          x,x`%,Left,Right,Center
   inifile=%inifile%`n`;                    Width of the window
   inifile=%inifile%`n`;                     Center and Right stretches it relative to the other window
   inifile=%inifile%`n`; 9: height         x,x`%,Top,Bottom,Center,Caption
   inifile=%inifile%`n`;                    Height of the window
   inifile=%inifile%`n`;                     Center and Bottom stretches it relative to the other window
   inifile=%inifile%`n`;                     Caption shrinks it to the Caption (title) bar (like Roll Up)
   inifile=%inifile%`n`;10: alwaysontop    On,Off,Toggle
   inifile=%inifile%`n`;                    Moves a window in front of all other windows
   inifile=%inifile%`n`;11: transparency   0-255,Off
   inifile=%inifile%`n`;                    Makes a window transparent
   inifile=%inifile%`n`;12: transcolor     000000-FFFFFF,Off
   inifile=%inifile%`n`;                    Makes a specific color transparent
   inifile=%inifile%`n`;13: clipx          x,x`%,Off
   inifile=%inifile%`n`;                    Cuts away the outer edges of a window, clipx controls the left edge
   inifile=%inifile%`n`;                     Off turns off clipping
   inifile=%inifile%`n`;14: clipy          x,x`%
   inifile=%inifile%`n`;15: clipwidth      x,x`%,Width
   inifile=%inifile%`n`;                    Width is the width of the window
   inifile=%inifile%`n`;16: clipheight     x,x`%,Height
   inifile=%inifile%`n`;                    Height is the height of the window
   inifile=%inifile%`n`;17: path           path of the program/file to run
   inifile=%inifile%`n`;>17 Maximize       Maximizes the window
   inifile=%inifile%`n`;    Minimize       Minimizes the window
   inifile=%inifile%`n`;    Restore        Restores the window
   inifile=%inifile%`n`;    Show           Shows the window
   inifile=%inifile%`n`;    Hide           Hides the window
   inifile=%inifile%`n`;    Top            Moves the window on top of the other windows
   inifile=%inifile%`n`;    Bottom         Moves the window to the bottom of the other windows
   inifile=%inifile%`n`;    Enable         Enables mouse and keyboard input
   inifile=%inifile%`n`;    Disable        Disables mouse and keyboard input
   inifile=%inifile%`n`;    Ghost          Makes mouse clicks go through to the underlying window
   inifile=%inifile%`n`;
   inifile=%inifile%`n`;The first 17 parameters must be in their right place, the rest must be separated by commas.
   inifile=%inifile%`n`;Also, all lines must contain at least 17 commas/parameters.
   inifile=%inifile%`n`;11-16 and Ghost for Windows XP, 2000, 2003 only.
   inifile=%inifile%`n`;
   inifile=%inifile%`n`;Example:
   inifile=%inifile%`n`;Maximizes all Notepad windows when activated, and, when deactivated,
   inifile=%inifile%`n`;puts them On top, makes them tranparent by 150, makes the color FFFFFF (white) transparent,
   inifile=%inifile%`n`;and, while deactivated, moves them to the Bottom Right of the desktop, resizes them to
   inifile=%inifile%`n`;150x150, cuts the window's 10 left and 10 top lines of pixels, keeping the remaining 80`%
   inifile=%inifile%`n`;width and height, and finally Ghosts them to pass through any mouseclicks.
   inifile=%inifile%`n`;
   inifile=%inifile%`n`;Creating    ,- Notepad,,,,,,,,,,,,,,,,,,,
   inifile=%inifile%`n`;Activating  ,- Notepad,,,,,,,,Off,Off,,Off,,,,,,Maximize,,
   inifile=%inifile%`n`;Active      ,- Notepad,,,,,,,,,,,,,,,,,,,
   inifile=%inifile%`n`;Maximizing  ,- Notepad,,,,,,,,,,,,,,,,,,,
   inifile=%inifile%`n`;Maximized   ,- Notepad,,,,,,,,,,,,,,,,,,,
   inifile=%inifile%`n`;Deactivating,- Notepad,,,,,,,,On,155,FFFFFF,,,,,,,,Restore,
   inifile=%inifile%`n`;Deactivated ,- Notepad,,,,-Right,-Bottom,150,150,,,,10,10,80`%,80`%,,,,,Ghost
   inifile=%inifile%`n`;
   inifile=%inifile%`n`;Example:
   inifile=%inifile%`n`; Makes Calculator stick inside the Bottom Right edge of the Notepad window when active,
   inifile=%inifile%`n`; and Left of and below the Top edge when deactivated.
   inifile=%inifile%`n`;
   inifile=%inifile%`n`;Active      ,Calc,,- Notepad,,-Right,-Bottom,,,On,,,,,,,,,,,
   inifile=%inifile%`n`;Deactivated ,Calc,,- Notepad,,-Left,+Top,,,Off,,,,,,,,,,,
   inifile=%inifile%`n`;
   inifile=%inifile%`n`;Example:
   inifile=%inifile%`n`; Rolls up Calculator when the mouse if outside its window.
   inifile=%inifile%`n`;
   inifile=%inifile%`n`;Inside      ,Calc,,,,,,,,,,,Off,,,,,,,,
   inifile=%inifile%`n`;Outside     ,Calc,,,,,,,,,,,0,0,Width,23,,,,,
   inifile=%inifile%`n`;
   inifile=%inifile%`n`;
   inifile=%inifile%`n`;There are also a few global parameters that you normally need not be concerned about...
   inifile=%inifile%`n`;1. The Hotkeys parameter can be set to On or Off (initially Off). You can set this
   inifile=%inifile%`n`;   to Off if the hotkeys of this program conflict with the hotkeys of another program.
   inifile=%inifile%`n`;2. The Interval parameter specifies the time in thousandths of a second (initially 500,
   inifile=%inifile%`n`;   not <100) between starting executions of the main processing loop. This can be made
   inifile=%inifile%`n`;   smaller to increase speed or larger to decrease CPU time used (if your computer is
   inifile=%inifile%`n`;   slow (note: does not take effect until next time program is run).
   inifile=%inifile%`n`;3. Each of the Top, Bottom, Left, and Right offset parameters specifies a distance
   inifile=%inifile%`n`;   in pixels (intially 0, not >200) from a screen edge. The screen area defined by
   inifile=%inifile%`n`;   an offset is then restricted so that %applicationname% does not position windows in this area
   inifile=%inifile%`n`;   (except for WholeScreen).
   inifile=%inifile%`n`;   You might change one or more of these offset parameters if:
   inifile=%inifile%`n`;   A. the Taskbar is not Always on top (see Start/Settings/Taskbar...) and you want it
   inifile=%inifile%`n`;      to show (otherwise, ..x=-Right,y=-Bottom.. or submenu item Bottom Right covers up
   inifile=%inifile%`n`;      the system tray). If for this reason, try using Bottomoffset=27 or so
   inifile=%inifile%`n`;      (Windows Standard display scheme, Windows 98)
   inifile=%inifile%`n`;   B. you want to try to keep one or more areas of the screen near an edge uncovered
   inifile=%inifile%`n`;      by windows to display desktop icons, toolbars, widgets, gadgets, etc.
   inifile=%inifile%`n`;
   inifile=%inifile%`n`;
   inifile=%inifile%`n`;Notes on menu items:
   inifile=%inifile%`n`;1.  All window-changing menu items are applied to the active window only, so even if there
   inifile=%inifile%`n`;    are windows on the screen nothing will happen when a trying to apply a menu item
   inifile=%inifile%`n`;    unless one of these windows is the active window.
   inifile=%inifile%`n`;2.  Menu items will not be applied to windows controlled by Active mode, to avoid
   inifile=%inifile%`n`;    conflicts. So this too can cause nothing to happen when a trying to apply a menu item.
   inifile=%inifile%`n`;3.  If a custom menu line in the .ini file does not appear in the menu, it is probably
   inifile=%inifile%`n`;    because there is something wrong with one or more of the parameters in it.
   inifile=%inifile%`n`;4.  Roll Up/Roll Down - The original height of a rolled up window is saved and can be
   inifile=%inifile%`n`;    restored by Roll Down as long as the window has remained open, even if it has been
   inifile=%inifile%`n`;    minimized at some point. Windows that have been rolled up by Caption or closed in
   inifile=%inifile%`n`;    a rolled up state and reopened can be rolled down, which will result in a window with
   inifile=%inifile%`n`;    proportions the same as the available (that is, not including offset areas, if any)
   inifile=%inifile%`n`;    screen area.
   inifile=%inifile%`n`;5.  Center - Double-clicking the system tray icon centers the active window.
   inifile=%inifile%`n`;6.  Cover - The items in this submenu can be used to cover the available screen area
   inifile=%inifile%`n`;    with 2, 3, or 4 windows that each cover half or a quarter of the space.
   inifile=%inifile%`n`;7.  Place and Cover - Notice that for the hotkeys of the submenu items of these menu items,
   inifile=%inifile%`n`;    the positions of the hotkeys on the numeric keypad match the positions on the screen
   inifile=%inifile%`n`;    that the window will be moved to.
   inifile=%inifile%`n`;8.  Zoom In/Out - Zoom In doubles the area of a window while keeping the same center point
   inifile=%inifile%`n`;    unless its position or size are adjusted to keep all of it inside the available screen
   inifile=%inifile%`n`;    area. Zoom Out halves the area. Hint: Alt-I twice = 4X.
   inifile=%inifile%`n`;9.  Transparency - This does not appear on Windows 95/98/NT systems.
   inifile=%inifile%`n`;10. Undo/Remember - Undo is a slngle-level restore function that can be used to restore the
   inifile=%inifile%`n`;    size and position (and transparency if available) of the window that was most recently
   inifile=%inifile%`n`;    changed by use of a menu item (including custom items but not Roll Up or Roll Down),
   inifile=%inifile%`n`;    or that had its data saved by Remember. Undo is intended for quick use after an
   inifile=%inifile%`n`;    unappreciated change, or use after temporarily changing a window (even using the mouse)
   inifile=%inifile%`n`;    to work within it, but can be used later, provided that the window has remained open
   inifile=%inifile%`n`;    and no other window's data has been saved as a result of clicking a menu item.
   inifile=%inifile%`n`;11. Always on top/Send to Bottom - A check mark will appear in the menu next to the Always
   inifile=%inifile%`n`;    on top item if that is the status of the current active window. Send to Bottom will
   inifile=%inifile%`n`;    send an Always on top window to the bottom, changing its status to not Always on top.
   inifile=%inifile%`n`;12. Hotkeys - A check mark will appear in the menu next to Hotkeys if enabled. All standard
   inifile=%inifile%`n`;    menu and submenu items have hotkeys, except HotKeys and Exit (to prevent accidental
   inifile=%inifile%`n`;    inactivation). Hotkey assignments can be found in the Help window.
   inifile=%inifile%`n`;
   inifile=%inifile%`n`;
   inifile=%inifile%`n`;Here's a pattern line for you to cut, paste, and modify, must have mode and title/menu item:
   inifile=%inifile%`n`;mode     , title/m.i. , text , otitle , otext , x , y , width , height , On/Off/Toggle , nnn/Off , hhhhhh/Off , cx , cy , cwidth , cheight , path ,  ,  ,  ,
   inifile=%inifile%`n`;Try not to delete any commas, and don't forget to remove the semicolon ( `; )
   inifile=%inifile%`n`;Here's a pattern line for postition/size only:
   inifile=%inifile%`n`;mode     , title/m.i. , text ,,, x , y , width , height ,,,,,,,,,,,,
   inifile=%inifile%`n`;And here's one for transparency/transcolor only:
   inifile=%inifile%`n`;mode     , title/m.i. , text ,,,,,,,, nnn/Off , hhhhhh/Off ,,,,,,,,,
   inifile=%inifile%`n
   inifile=%inifile%`nActive      ,Calc,,- Notepad,,-Right,-Bottom,,,On,,,,,,,,,,,
   inifile=%inifile%`nDeactivated ,Calc,,- Notepad,,-Left,+Top,,,Off,,,,,,,,,,,
   inifile=%inifile%`n
   inifile=%inifile%`n`;Stop    /\ enter automatic and menu parameters above this line /\
   inifile=%inifile%`n
   inifile=%inifile%`n[Parms]
   inifile=%inifile%`nHotkeys=Off
   inifile=%inifile%`nInterval=500
   inifile=%inifile%`nLeftoffset=0
   inifile=%inifile%`nRightoffset=0
   inifile=%inifile%`nTopoffset=0
   inifile=%inifile%`nBottomoffset=0
   inifile=%inifile%`n
   FileAppend,%inifile%,%applicationname%2.ini
}

FileGetTime,currmodtime,%applicationname%2.ini,M
IfNotInString,currmodtime,%prevmodtime% ; .ini file has been modified
{
   prevmodtime=%currmodtime%

   inifile=
   autocount=0
   menucount=0

   Loop,Read,%applicationname%2.ini
   {
     IfInString,A_LoopReadLine,`;Stop
       Break
     IfNotInString,A_LoopReadLine,`;
     IfInString,A_LoopReadLine,`,
     {
       StringSplit,part,A_LoopReadLine,`,

       2ndpart =%part2%
       If 2ndpart<>
       {
         1stpart =%part1%
         If 1stpart in Inside,Outside,Creating,Activating,Active,Maximizing,Maximized,Deactivating,Deactivated
         {
           asterpos:=InStr(2ndpart,"*")
           If asterpos=0 ;no asterisk in title - so it's not a wildcard
           {
             titlematch=S ;S - title string find, or...
             fslashpos:=InStr(2ndpart,"/")
             If fslashpos=1 ;could be a class name
             {
               fslashpos:=InStr(2ndpart,"/",False,2)
               If (fslashpos=StrLen(2ndpart))
                 titlematch=C ;C - class name match
             }
             Gosub,LOADAUTO
           }
           Else
           {
             If (asterpos=StrLen(2ndpart)) ;asterisk is last character
             {
               titlematch=F ;F - first title characters match
               Gosub,LOADAUTO
             }
             Else
             {
               If asterpos=1 ;or, asterisk is first character
               {
                 titlematch=L ;L - last title characters match
                 Gosub,LOADAUTO
               }
               Else
               {
                 titlematch=S ;S - title string find
                 Gosub,LOADAUTO
               }
             }
           }
         }
         Else
         If 1stpart=Menu
           Gosub,LOADMENU
       }
     }
   }
   Gosub,TRAYMENU ;builds new menu since there may be
; ;added/changed/deleted custom menu items
}
Return

LOADAUTO:
autocount++

mode_Auto_%autocount% =%part1% ;abc

titlematch_Auto_%autocount% =%titlematch% ;S(tring), F(irst), L(ast), or C(lass)
If titlematch=S
{
   titlelength_Auto_%autocount% =
   title_Auto_%autocount% =%2ndpart% ;abc
}
Else
{
   If titlematch=C
   {
     titlelength_Auto_%autocount%=
     StringTrimRight,2ndpart,2ndpart,1
     StringTrimLeft,title_Auto_%autocount%,2ndpart,1
   }
   Else
   {
     titlelength_Auto_%autocount%:=StrLen(2ndpart)-1
     If titlematch=F
       StringTrimRight,title_Auto_%autocount%,2ndpart,1
     Else
       StringTrimLeft,title_Auto_%autocount%,2ndpart,1
   }
}

text_Auto_%autocount% =%part3% ;abc
othertitle_Auto_%autocount% =%part4% ;abc,WholeScreen,empty to use screen
othertext_Auto_%autocount% =%part5% ;abc

type=Auto
count=%autocount%
Gosub,LOADEITHER
Return

LOADMENU:
menucount++

If 2ndpart=Spacer
{
   item_Menu_%menucount% = ;empty
   Return
}

If InStr(2ndpart,"&")=(StrLen(2ndpart))
   StringReplace,2ndpart,2ndpart,& ;since there's no character after it
Else
{
   amperpos:=InStr(2ndpart,"&")
   If amperpos>0
   {
     StringSplit,thischar,2ndpart
     selectpos:=amperpos+1
     selectchar:=thischar%selectpos%
     If selectchar in %A_Space%,r,d,p,c,m,e,u,a,b,k,s,h,q
       StringReplace,2ndpart,2ndpart,&,,All ;since there's no character to underline, or the ;; character will conflict with another menu item
   }
}
item_Menu_%menucount% =%2ndpart% ;abc

thispart =%part4%
If thispart=WholeScreen
   othertitle_Menu_%menucount% =WholeScreen ;WholeScreen only, or...
Else
   othertitle_Menu_%menucount% = ;empty
othertext_Menu_%menucount% = ;empty

type=Menu
count=%menucount%
Gosub,LOADEITHER
Return

LOADEITHER:
x_%type%_%count% =%part6%
If x_%type%_%count% not in -Left,+Left,-Center,Center,+Center,-Right,+Right,Caption
{
   thispart =%part6%
   Gosub,NUMTEST
   If validnum=N
     x_%type%_%count% = ;...or x,x%
}
Else
If type=Menu
   If x_%type%_%count% in -Left,+Right
      x_%type%_%count% =

y_%type%_%count% =%part7%
If y_%type%_%count% not in -Top,+Top,-Center,Center,+Center,-Bottom,+Bottom,Caption
{
   thispart =%part7%
   Gosub,NUMTEST
   If validnum=N
     y_%type%_%count% = ;...or x,x%
}
Else
If type=Menu
   If y_%type%_%count% in -Top,+Bottom
      y_%type%_%count% =

width_%type%_%count% =%part8%
If width_%type%_%count% not in Width,Right,Center
{
   thispart =%part8%
   Gosub,NUMTEST
   If validnum=N
     width_%type%_%count% = ;...or x,x%
}

height_%type%_%count% =%part9%
If height_%type%_%count% not in Height,Bottom,Center,Caption
{
   thispart =%part9%
   Gosub,NUMTEST
   If validnum=N
     height_%type%_%count% = ;...or x,x%
}

alwaysontop_%type%_%count% =%part10%
If alwaysontop_%type%_%count% not in On,Off,Toggle
   alwaysontop_%type%_%count%    =

If transparencyon=Y
{
   transparency_%type%_%count% =%part11% ;0-255,Off
   If transparency_%type%_%count%<>Off
   If transparency_%type%_%count% is not digit
     transparency_%type%_%count% =
   Else
     If transparency_%type%_%count%>255
       transparency_%type%_%count% =

   transcolor_%type%_%count% =%part12% ;000000-FFFFFF,Off
   If transcolor_%type%_%count%<>Off
   If transcolor_%type%_%count% is not xdigit
     transcolor_%type%_%count% =
   Else
     If StrLen(transcolor_%type%_%count%)<>6
       transcolor_%type%_%count% =

   clipx_%type%_%count% =%part13%
   If clipx_%type%_%count%<>Off
   {
     thispart =%part13%
     Gosub,NUMTEST
     If validnum=N
       clipx_%type%_%count% = ;...or x,x%
   }

   thispart =%part14%
   Gosub,NUMTEST
   If validnum=Y
     clipy_%type%_%count% =%part14% ;x,x%

   clipwidth_%type%_%count% =%part15%
   If clipwidth_%type%_%count%<>Width
   {
     thispart =%part15%
     Gosub,NUMTEST
     If validnum=N
       clipwidth_%type%_%count% = ;...or x,x%
   }

   clipheight_%type%_%count% =%part16%
   If clipheight_%type%_%count%<>Height
   {
     thispart =%part16%
     Gosub,NUMTEST
     If validnum=N
       clipheight_%type%_%count% = ;...or x,x%
   }

   clip_%type%_%count%=0
   If clipx_%type%_%count%>=0
   If clipy_%type%_%count%>=0
   If clipwidth_%type%_%count%>=0
   If clipheight_%type%_%count%>=0
     clip_%type%_%count%=1
   ghost_%type%_%count%=0
   IfInString,line,`,Ghost
     ghost_%type%_%count%=1
}

filepath_%type%_%count% =%part17% ;abc

maximize_%type%_%count%=0
IfInString,line,`,Maximize
   maximize_%type%_%count%=1
minimize_%type%_%count%=0
IfInString,line,`,Minimize
   minimize_%type%_%count%=1
restore_%type%_%count%=0
IfInString,line,`,Restore
   restore_%type%_%count%=1
hide_%type%_%count%=0
IfInString,line,`,Hide
   hide_%type%_%count%=1
show_%type%_%count%=0
IfInString,line,`,Show
   show_%type%_%count%=1
top_%type%_%count%=0
IfInString,line,`,Top
   top_%type%_%count%=1
bottom_%type%_%count%=0
IfInString,line,`,Bottom
   bottom_%type%_%count%=1
enable_%type%_%count%=0
IfInString,line,`,Enable
   enable_%type%_%count%=1
disable_%type%_%count%=0
IfInString,line,`,Disable
   disable_%type%_%count%=1
activate_%type%_%count%=0
IfInString,line,`,Activate
   activate_%type%_%count%=1
deactivate_%type%_%count%=0
IfInString,line,`,Deactivate
   deactivate_%type%_%count%=1
Return

NUMTEST:
validnum=Y
If thispart<>
{
   IfInString,thispart,`%
     StringTrimRight,thispart,thispart,1
   If thispart is not number
     validnum=N
}
Return


TRAYMENU:
Menu,Tray,DeleteAll ;fresh start
Menu,Tray,NoStandard
Menu,Tray,Tip,%applicationname%

Loop,%menucount% ;custom menu items - item can be spacer
   Menu,Tray,Add,% item_Menu_%A_Index%,APPLYMENUITEM
If menucount>0 ;spacer before standard menu items
   Menu,Tray,Add,

Menu,Tray,Add,&Roll Up,ROLLUP
Menu,Tray,Add,Roll &Down,ROLLDOWN
Menu,Tray,Add,
Menu,Tray,Add,Center,CENTER
Menu,Tray,Add,&Place,:Placemenu
Menu,Tray,Add,&Cover,:Covermenu
Menu,Tray,Add,&Morph,:Morphmenu

If transparencyon=Y
   Menu,Tray,Add,&Transparency,:Transpmenu

Menu,Tray,Add,R&emember,REMEMBER
Menu,Tray,Add,&Undo,UNDO
Menu,Tray,Add,

Menu,Tray,Add,&Always on top,AONTOP
If activeaontop=N
   Menu,Tray,Uncheck,&Always on top
Else
   Menu,Tray,Check,&Always on top
Menu,Tray,Add,Send to &Bottom,TOBOTTOM
Menu,Tray,Add,

IniRead,hotkeys,%applicationname%2.ini,Parms,Hotkeys
Menu,Tray,Add,Hot&keys,HOTKEYS
Gosub,CHECKHOTKEYS

Menu,Tray,Add,&Settings...,SETTINGS
Menu,Tray,Add,&Help...,HELP
Menu,Tray,Add,E&xit,EXIT
Menu,Tray,Default,Center
Return


CHECKHOTKEYS:
If hotkeys=On
{
   Menu,Tray,Check,Hot&keys
   Hotkey,!R,On
   Hotkey,!Up,On
   Hotkey,!D,On
   Hotkey,!Down,On
   Hotkey,!W,On
   Hotkey,!T,On
   Hotkey,!I,On
   Hotkey,!O,On
   Hotkey,!E,On
   Hotkey,!U,On
   Hotkey,!A,On
   Hotkey,!B,On
   Hotkey,!S,On
   Hotkey,!H,On
   Hotkey,!Numpad1,On
   Hotkey,!Numpad2,On
   Hotkey,!Numpad3,On
   Hotkey,!Numpad4,On
   Hotkey,!Numpad5,On
   Hotkey,!Numpad6,On
   Hotkey,!Numpad7,On
   Hotkey,!Numpad8,On
   Hotkey,!Numpad9,On
   Hotkey,^!Numpad1,On
   Hotkey,^!Numpad2,On
   Hotkey,^!Numpad3,On
   Hotkey,^!Numpad4,On
   Hotkey,^!Numpad6,On
   Hotkey,^!Numpad7,On
   Hotkey,^!Numpad8,On
   Hotkey,^!Numpad9,On

   If transparencyon=Y
   {
     Hotkey,!0,On
     Hotkey,!1,On
     Hotkey,!2,On
     Hotkey,!3,On
     Hotkey,!4,On
     Hotkey,!5,On
     Hotkey,!6,On
     Hotkey,!7,On
     Hotkey,!8,On
     Hotkey,!9,On
   }
}
Else
{
   Menu,Tray,Uncheck,Hot&keys
   Hotkey,!R,Off
   Hotkey,!Up,Off
   Hotkey,!D,Off
   Hotkey,!Down,Off
   Hotkey,!W,Off
   Hotkey,!T,Off
   Hotkey,!I,Off
   Hotkey,!O,Off
   Hotkey,!E,Off
   Hotkey,!U,Off
   Hotkey,!A,Off
   Hotkey,!B,Off
   Hotkey,!S,Off
   Hotkey,!H,Off
   Hotkey,!Numpad1,Off
   Hotkey,!Numpad2,Off
   Hotkey,!Numpad3,Off
   Hotkey,!Numpad4,Off
   Hotkey,!Numpad5,Off
   Hotkey,!Numpad6,Off
   Hotkey,!Numpad7,Off
   Hotkey,!Numpad8,Off
   Hotkey,!Numpad9,Off
   Hotkey,^!Numpad1,Off
   Hotkey,^!Numpad2,Off
   Hotkey,^!Numpad3,Off
   Hotkey,^!Numpad4,Off
   Hotkey,^!Numpad6,Off
   Hotkey,^!Numpad7,Off
   Hotkey,^!Numpad8,Off
   Hotkey,^!Numpad9,Off

   If transparencyon=Y
   {
     Hotkey,!0,Off
     Hotkey,!1,Off
     Hotkey,!2,Off
     Hotkey,!3,Off
     Hotkey,!4,Off
     Hotkey,!5,Off
     Hotkey,!6,Off
     Hotkey,!7,Off
     Hotkey,!8,Off
     Hotkey,!9,Off
   }
}
Return


APPLYMENUITEM:
Critical
Gosub,CHECKACTIVE
If activematch=N
{
   type=Menu
   savelineindex=%lineindex%
   lineindex:=A_ThisMenuItemPos
;  lineindex-=10 ;if debugging and not "Menu,Tray,NoStandard"
   savewinid=%winid%
   winid=%actwinid%

   Gosub,MENUITEM

   type=Auto
   lineindex=%savelineindex%
   winid=%savewinid%
}
Gosub,REACTIVATE
Return


ROLLUP:
Gosub,CHECKACTIVE
If activematch=N
{
   WinGetPos,,,,rheight,ahk_id %actwinid%
   rheight%actwinid%=%rheight% ;save the window height so that it may be rolled down later
   WinMove,ahk_id %actwinid%,,,,,%captionheight%
}
Gosub,REACTIVATE
Return

ROLLDOWN:
Gosub,CHECKACTIVE
If activematch=N
{
   If rheight%actwinid%=
   {
     WinGetPos,,,rwidth,rheight,ahk_id %actwinid%
     If rheight=%captionheight% ;window was closed while rolled up

       rheight%actwinid%:=rwidth*(monitorHeight/monitorWidth)
; ;set height = width X screen height/width
; ;so window stays on screen
   }
   If rheight%actwinid%<>
   {
     WinMove,ahk_id %actwinid%,,,,,% rheight%actwinid% ;sets window to former (or calculated) height
     rheight%actwinid%=
   }
}
Gosub,REACTIVATE
Return


TOPLEFT:
Gosub,CHECKACTIVE
If activematch=N
{
   Gosub,GETUNDODATA
   wx:=monitorLeft
   wy:=monitorTop
   wwidth=
   wheight=
   Gosub,MOVESIZEACT
}
Gosub,REACTIVATE
Return

TOPCENTER:
Gosub,CHECKACTIVE
If activematch=N
{
   Gosub,GETWINDATA
   wx:=(monitorRight-awidth)/2
   wy:=monitorTop
   wwidth=
   wheight=
   Gosub,MOVESIZEACT
}
Gosub,REACTIVATE
Return

TOPRIGHT:
Gosub,CHECKACTIVE
If activematch=N
{
   Gosub,GETWINDATA
   wx:=monitorRight-awidth
   wy:=monitorTop
   wwidth=
   wheight=
   Gosub,MOVESIZEACT
}
Gosub,REACTIVATE
Return

MIDDLELEFT:
Gosub,CHECKACTIVE
If activematch=N
{
   Gosub,GETWINDATA
   wx:=monitorLeft
   wy:=(monitorBottom-aheight)/2
   wwidth=
   wheight=
   Gosub,MOVESIZEACT
}
Gosub,REACTIVATE
Return

CENTER:
Gosub,CHECKACTIVE
If activematch=N
{
   Gosub,GETWINDATA
   wx:=(monitorRight-awidth)/2
   wy:=(monitorBottom-aheight)/2
   wwidth=
   wheight=
   Gosub,MOVESIZEACT
}
Gosub,REACTIVATE
Return

MIDDLERIGHT:
Gosub,CHECKACTIVE
If activematch=N
{
   Gosub,GETWINDATA
   wx:=monitorRight-awidth
   wy:=(monitorBottom-aheight)/2
   wwidth=
   wheight=
   Gosub,MOVESIZEACT
}
Gosub,REACTIVATE
Return

BOTTOMLEFT:
Gosub,CHECKACTIVE
If activematch=N
{
   Gosub,GETWINDATA
   wx:=monitorLeft
   wy:=monitorBottom-aheight
   wwidth=
   wheight=
   Gosub,MOVESIZEACT
}
Gosub,REACTIVATE
Return

BOTTOMCENTER:
Gosub,CHECKACTIVE
If activematch=N
{
   Gosub,GETWINDATA
   wx:=(monitorRight-awidth)/2
   wy:=monitorBottom-aheight
   wwidth=
   wheight=
   Gosub,MOVESIZEACT
}
Gosub,REACTIVATE
Return

BOTTOMRIGHT:
Gosub,CHECKACTIVE
If activematch=N
{
   Gosub,GETWINDATA
   wx:=monitorRight-awidth
   wy:=monitorBottom-aheight
   wwidth=
   wheight=
   Gosub,MOVESIZEACT
}
Gosub,REACTIVATE
Return


LEFTHALF:
Gosub,CHECKACTIVE
If activematch=N
{
   Gosub,GETUNDODATA
   wx:=monitorLeft
   wy:=monitorTop
   wwidth:=monitorWidth/2
   wheight:=monitorHeight
   Gosub,MOVESIZEACT
}
Gosub,REACTIVATE
Return

RIGHTHALF:
Gosub,CHECKACTIVE
If activematch=N
{
   Gosub,GETUNDODATA
   wx:=monitorWidth/2
   wy:=monitorTop
   wwidth:=Ceil(monitorWidth/2)
   wheight:=monitorHeight
   Gosub,MOVESIZEACT
}
Gosub,REACTIVATE
Return

TOPHALF:
Gosub,CHECKACTIVE
If activematch=N
{
   Gosub,GETUNDODATA
   wx:=monitorLeft
   wy:=monitorTop
   wwidth:=monitorWidth
   wheight:=monitorHeight/2
   Gosub,MOVESIZEACT
}
Gosub,REACTIVATE
Return

BOTTOMHALF:
Gosub,CHECKACTIVE
If activematch=N
{
   Gosub,GETUNDODATA
   wx:=monitorLeft
   wy:=monitorHeight/2
   wwidth:=monitorWidth
   wheight:=Ceil(monitorHeight/2)
   Gosub,MOVESIZEACT
}
Gosub,REACTIVATE
Return

TOPLEFTQTR:
Gosub,CHECKACTIVE
If activematch=N
{
   Gosub,GETUNDODATA
   wx:=monitorLeft
   wy:=monitorTop
   wwidth:=monitorWidth/2
   wheight:=monitorHeight/2
   Gosub,MOVESIZEACT
}
Gosub,REACTIVATE
Return

TOPRIGHTQTR:
Gosub,CHECKACTIVE
If activematch=N
{
   Gosub,GETUNDODATA
   wx:=monitorWidth/2
   wy:=monitorTop
   wwidth:=Ceil(monitorWidth/2)
   wheight:=monitorHeight/2
   Gosub,MOVESIZEACT
}
Gosub,REACTIVATE
Return

BOTTOMLEFTQTR:
Gosub,CHECKACTIVE
If activematch=N
{
   Gosub,GETUNDODATA
   wx:=monitorLeft
   wy:=monitorHeight/2
   wwidth:=monitorWidth/2
   wheight:=Ceil(monitorHeight/2)
   Gosub,MOVESIZEACT
}
Gosub,REACTIVATE
Return

BOTTOMRIGHTQTR:
Gosub,CHECKACTIVE
If activematch=N
{
   Gosub,GETUNDODATA
   wx:=monitorWidth/2
   wy:=monitorHeight/2
   wwidth:=Ceil(monitorWidth/2)
   wheight:=Ceil(monitorHeight/2)
   Gosub,MOVESIZEACT
}
Gosub,REACTIVATE
Return


WIDE:
Gosub,CHECKACTIVE
If activematch=N
{
   Gosub,GETUNDODATA
   wx:=monitorLeft
   wy=
   wwidth:=monitorWidth
   wheight=
   Gosub,MOVESIZEACT
}
Gosub,REACTIVATE
Return

TALL:
Gosub,CHECKACTIVE
If activematch=N
{
   Gosub,GETUNDODATA
   wx=
   wy:=monitorTop
   wwidth=
   wheight:=monitorHeight
   Gosub,MOVESIZEACT
}
Gosub,REACTIVATE
Return

ZOOMIN:
Gosub,CHECKACTIVE
If activematch=N
{
   Gosub,GETWINDATA
   wwidth:=Round(awidth*1.4142)
   wheight:=Round(aheight*1.4142)
   wx:=ax+((awidth-wwidth)/2)
   wy:=ay+((aheight-wheight)/2)

   If (wx+wwidth)>monitorRight
     wx:=monitorRight-wwidth
   If (wy+wheight)>monitorBottom
     wy:=monitorBottom-wheight
   If wx<%monitorLeft%
     wx:=monitorLeft
   If wy<%monitorTop%
     wy:=monitorTop
   If (monitorWidth<wwidth)
     wwidth:=monitorWidth
   If (monitorHeight<wheight)
     wheight:=monitorHeight

   Gosub,MOVESIZEACT
}
Gosub,REACTIVATE
Return

ZOOMOUT:
Gosub,CHECKACTIVE
If activematch=N
{
   Gosub,GETWINDATA
   wwidth:=Round(awidth/1.4142)
   wheight:=Round(aheight/1.4142)
   wx:=ax+((awidth-wwidth)/2)
   wy:=ay+((aheight-wheight)/2)
   Gosub,MOVESIZEACT
}
Gosub,REACTIVATE
Return


TRANSPHKEY:
transpnum:=A_ThisHotkey
transpnum++
Gosub,TRANSPARENCY
Return

TRANSPMENU:
transpnum:=A_ThisMenuItemPos
Gosub,TRANSPARENCY
Return

TRANSPARENCY:
Gosub,CHECKACTIVE
If activematch=N
{
   Gosub,GETWINDATA
   atransparency:=Round(((11-transpnum)*25.6)-1)
   Gosub,SETTRANSPACT
}
Gosub,REACTIVATE
Return


REMEMBER:
Gosub,CHECKACTIVE
If activematch=N
{
   uactwinid=
   Gosub,GETUNDODATA
}
Gosub,REACTIVATE
Return

UNDO:
Gosub,CHECKACTIVE
If activematch=N
{
   actwinid=¬twinid%
   If utransparency<>
     Gosub,SETTRANSPACT
   wx:=ux
   wy:=uy
   wwidth:=uwidth
   wheight:=uheight
   Gosub,MOVESIZEACT
}
Gosub,REACTIVATE
Return


GETWINDATA:
WinGetPos,ax,ay,awidth,aheight,ahk_id %actwinid%
WinGet,atransparency,Transparent,ahk_id %actwinid%
Gosub,GETUNDODATA
Return

GETUNDODATA:
If uactwinid<>%actwinid%
{
   uactwinid=%actwinid%
   WinGetPos,ux,uy,uwidth,uheight,ahk_id %actwinid%
   WinGet,utransparency,Transparent,ahk_id %actwinid%
}
Return

MOVESIZEACT:
WinMove,ahk_id %actwinid%,,%wx%,%wy%,%wwidth%,%wheight%
Return

SETTRANSPACT:
WinSet,Transparent,%atransparency%,ahk_id %actwinid%
If atransparency=255
   WinSet,Transparent,Off,ahk_id %actwinid%
Return


AONTOP:
Gosub,CHECKACTIVE
If activematch=N
{
   If activeaontop=Y
   {
     activeaontop=N
     WinSet,AlwaysOnTop,Off,ahk_id %actwinid%
     Menu,Tray,Uncheck,&Always on top
   }
   Else
   {
     activeaontop=Y
     WinSet,AlwaysOnTop,On,ahk_id %actwinid%
     Menu,Tray,Check,&Always on top
   }
}
Gosub,REACTIVATE
Return

TOBOTTOM:
Gosub,CHECKACTIVE
If activematch=N
;If activeaontop=N ;uncomment to disallow applying if always on top
{
   activeaontop=N ;and comment this
   WinSet,Bottom,,ahk_id %actwinid%
   Menu,Tray,Uncheck,&Always on top ;and this
}
Return


CHECKACTIVE:
activematch=N
WinGetClass,cclass,ahk_id %actwinid%
If cclass=ToolbarWindow32 ;if XP and/or 64 bit, [If cclass in ToolbarWindow32,(otherclass),...] ?
{
   activematch=Y ;bypass menu commands, since this is a system window
   Return
}

WinGet,cstate,MinMax,ahk_id %actwinid%
If cstate=-1
{
   activematch=Y ;bypass menu commands, since this is a minimized window
   Return
}

WinGetTitle,ctitle,ahk_id %actwinid%
WinGetText,ctext,ahk_id %actwinid%
Loop %autocount%
{
   If mode_Auto_%A_Index%=Active
   {
     If titlematch_Auto_%A_Index%=S
     {
       IfInString,ctitle,% title_Auto_%A_Index% ;try to find string
       {
         Gosub,CHECKTEXT
         If activematch=Y
           Break
       }
     }
     Else
     {
       If titlematch_Auto_%A_Index%=F
         StringLeft,ctitle,ctitle,titlelength_Auto_%A_Index% ;try to match first characters
       Else
         StringRight,ctitle,ctitle,titlelength_Auto_%A_Index% ;try to match first characters
       If ctitle=% title_Auto_%A_Index%
       {
         Gosub,CHECKTEXT
         If activematch=Y
           Break
       }
     }
   }
}
Return

CHECKTEXT:
If text_Auto_%A_Index%=
   activematch=Y ;bypass menu commands, since these windows will just snap back, etc.
Else
   IfInString,ctext,% text_Auto_%A_Index%
     activematch=Y
Return


REACTIVATE:
WinActivate,ahk_id %actwinid%
Return


HOTKEYS:
If hotkeys=On
{
   IniWrite,Off,%applicationname%2.ini,Parms,Hotkeys
   Menu,Tray,Uncheck,Hot&keys
}
Else
{
   IniWrite,On,%applicationname%2.ini,Parms,Hotkeys
   Menu,Tray,Check,Hot&keys
}
Return

SETTINGS:
Gosub,READINI
Run,%applicationname%2.ini
Return

HELP:
help=Controls how to display a window
help=%help%`n
help=%help%`nMove, maximize, minimize, restore, enable, disable, hide, show,
help=%help%`nontop, bottom, alwaysontop, clip, transparent, transparent color,
help=%help%`nmove relative to another window, stick to the edge of the screen,
help=%help%`nroll up and down, morph wide/tall/zoom in/zoom out.
help=%help%`n
help=%help%`nHotkey assignments:
help=%help%`n(Hotkeys must be on)
help=%help%`nAlt-R (or up /\) - Roll up active window
help=%help%`nAlt-D (or down \/) - roll Down active window
help=%help%`nAlt-[keypad#] - place active window at edge location
help=%help%`nCtrl-Alt-[keypad#] - cover part of screen area with active window
help=%help%`nAlt-W - expand active window horizontally (Wide)
help=%help%`nAlt-T - expand active window vertically (Tall)
help=%help%`nAlt-I - zoom In active window (2X area)
help=%help%`nAlt-O - zoom Out active window (.5X area)
If transparencyon=Y
   help=%help%`nAlt-[#] - set transparency level of active window
help=%help%`nAlt-E - rEmember active window data for later undo
help=%help%`nAlt-U - Undo changes to active window
help=%help%`nAlt-A - change Always on top status of active window
help=%help%`nAlt-B - move active window to Bottom of others
help=%help%`nAlt-S - edit Settings file
help=%help%`nAlt-H - display this Help window
help=%help%`n
help=%help%`nFor more information,read %applicationname%2.ini
help=%help%`nby rightclicking the tray icon and selecting Settings.
help=%help%`n
help=%help%`nSkrommel @2005    http://www.1HourSoftware.com
help=%help%`nTim Morck @2006
MsgBox,0,%applicationname%,%help%
help=
Return

EXIT:
ExitApp


INSIDE:
OUTSIDE:
CREATING:
ACTIVATING:
ACTIVE:
MAXIMIZING:
MAXIMIZED:
DEACTIVATING:
DEACTIVATED:

MENUITEM:

Gosub,MOVE
Gosub,MINMAX
Gosub,SHOW
Gosub,TOP
Gosub,ENABLE
Gosub,ACTIVATE

If transparencyon=Y
{
   Gosub,TRANSPARENT
   Gosub,TRANSCOLOR
   Gosub,CLIPGHOST
}

Gosub,RUN
Return

MOVE:
x:=x_%type%_%lineindex% ;so the arrays are not changed
y:=y_%type%_%lineindex%
width:=width_%type%_%lineindex%
height:=height_%type%_%lineindex%

WinGetPos,sx,sy,swidth,sheight,ahk_id %winid%

If type=Menu
If uactwinid<>%winid%
{
   uactwinid=%winid% ;save current data for possible undo of custom menu item
   ux:=sx
   uy:=sy
   uwidth:=swidth
   uheight:=sheight
   WinGet,utransparency,Transparent,ahk_id %winid%
}

If othertitle_%type%_%lineindex%=WholeScreen
{
   ox:=0
   oy:=0
   owidth:=A_ScreenWidth
   oheight:=A_ScreenHeight
}
Else
{
   ox:=monitorLeft
   oy:=monitorTop
   owidth:=monitorRight
   oheight:=monitorBottom
}

;*****
If othertitle_%type%_%lineindex%<>
IfWinExist,% othertitle_%type%_%lineindex%,% othertext_%type%_%lineindex%
{
   WinGet,otherwinid,ID,% othertitle_%type%_%lineindex%,% othertext_%type%_%lineindex%
   WinGetPos,ox,oy,owidth,oheight,ahk_id %otherwinid%
}
;*****
;    note: since a window (B) that is minimized has a position of x=3000,y=3000 (W98), if it is the other window
;    that controls the position of a window (A), A will be 'pulled' off the screen along with B if B is minimized.
;    To avoid this, and instead position A relative to the screen as though B does not exist when B is minimized,
;    use this code instead:
;
;If othertitle_%type%_%lineindex%<>
;IfWinExist,% othertitle_%type%_%lineindex%,% othertext_%type%_%lineindex%
;{
;  WinGet,mstate,MinMax,% othertitle_%type%_%lineindex%,% othertext_%type%_%lineindex%
;  If mstate<>-1 ;other window not minimized
;  {
;    WinGet,otherwinid,ID,% othertitle_%type%_%lineindex%,% othertext_%type%_%lineindex%
;    WinGetPos,ox,oy,owidth,oheight,ahk_id %otherwinid%
;  }
;}
;*****

;    note: a window (A) 'attached' to the outside of an other window (B) (such as x=-Left does) will be positioned
;    relative to the screen if the other window does not exist, and so will be 'pushed' just outside the screen
;    (or screen area if offsets are used). To avoid this, don't use x=-Left, x=+Right, y=-Top, or y=+Bottom
;    unless A will only exist when B exists.

If x=+Left
   x:=0
Else
If x=+Right
   x:=owidth
Else
If x=+Center
   x:=owidth/2
Else
If x=Caption
   x:=captionheight ;shift right (x) by height (y) for Cascade effect
Else
IfInString,x,`%
{
   StringTrimRight,x,x,1
   x:=owidth*x/100+ox
}

If y=+Top
   y:=0
Else
If y=+Bottom
   y:=oheight
Else
If y=+Center
   y:=oheight/2
Else
If y=Caption
   y:=captionheight
Else
IfInString,y,`%
{
   StringTrimRight,y,y,1
   y:=oheight*y/100
}

If width=
   width:=swidth
If height=
   height:=sheight

If width=Width
   width:=owidth
Else
If width=Right
   width:=owidth-x
Else
If width=Center
   width:=owidth/2-x
Else
IfInString,width,`%
{
   StringTrimRight,width,width,1
   width:=owidth*width/100
}

If height=Height
   height:=oheight
Else
If height=Bottom
   height:=oheight-y
Else
If height=Center
   height:=oheight/2-y
Else
If height=Caption
{
   height:=captionheight ;roll up window
   WinGetPos,,,,rheight,ahk_id %winid%
   rheight%winid%=%rheight% ;save the window height so that it may be rolled down later
}
Else
IfInString,height,`%
{
   StringTrimRight,height,height,1
   height:=oheight*height/100
}

If x=-Left
   x:=ox-width
Else
If x=-Right
   x:=owidth-width+ox
Else
If x=-Center
   x:=owidth/2-width+ox
Else
If x=Center
   x:=owidth/2-width/2+ox
Else
   x:=x+ox

If y=-Top
   y:=oy-height
Else
If y=-Bottom
   y:=oheight-height+oy
Else
If y=-Center
   y:=oheight/2-height+oy
Else
If y=Center
   y:=oheight/2-height/2+oy
Else
   y:=y+oy

WinMove,ahk_id %winid%,,%x%,%y%,%width%,%height%
Return

MINMAX:
If maximize_%type%_%lineindex%=1
   WinMaximize,ahk_id %winid%
If minimize_%type%_%lineindex%=1
   WinMinimize,ahk_id %winid%
If restore_%type%_%lineindex%=1
   WinRestore,ahk_id %winid%
Return

SHOW:
If show_%type%_%lineindex%=1
   WinShow,ahk_id %winid%
If hide_%type%_%lineindex%=1
   WinHide,ahk_id %winid%
Return

TOP:
If alwaysontop_%type%_%lineindex%<>
   WinSet,AlwaysOnTop,% alwaysontop_%type%_%lineindex%,ahk_id %winid%
If top_%type%_%lineindex%=1
   WinSet,Top,,ahk_id %winid%
If bottom_%type%_%lineindex%=1
   WinSet,Bottom,,ahk_id %winid%
Return

ENABLE:
If enable_%type%_%lineindex%=1
   WinSet,Enable,,ahk_id %winid%
If disable_%type%_%lineindex%=1
   WinSet,Disable,,ahk_id %winid%
Return

ACTIVATE:
If activate_%type%_%lineindex%=1
   WinActivate,ahk_id %winid%
Return

TRANSPARENT:
If transparency_%type%_%lineindex%<>
If transparency%winid%<>transparency_%type%_%lineindex%
{
   transparency%winid%=% transparency_%type%_%lineindex%

   WinSet,Transparent,% transparency_%type%_%lineindex%,ahk_id %winid%
   If (transparency_%type%_%lineindex%="Off"
    or transparency_%type%_%lineindex%="255")
     WinSet,Transparent,Off,ahk_id %winid%
}
Return

TRANSCOLOR:
If transcolor_%type%_%lineindex%<>
If transcolor%winid%<>transcolor_%type%_%lineindex%
{
   transcolor%winid%=% transcolor_%type%_%lineindex%

   If A_OSVersion=WIN_XP
   {
     WinGet,stransparency,Transparent,ahk_id %winid%
     WinSet,Transparent,Off,ahk_id %winid%
     WinSet,TransColor,% transcolor_%type%_%lineindex% stransparency,ahk_id %winid%
   }
   Else
   {
     WinSet,Transparent,Off,ahk_id %winid%
     WinSet,TransColor,% transcolor_%type%_%lineindex%,ahk_id %winid%
     If transparency_%type%_%lineindex%<>Off
     If transparency_%type%_%lineindex%<255
       WinSet,Transparent,% transparency_%type%_%lineindex%,ahk_id %winid%
   }
}
Return

CLIPGHOST:
clipx:=clipx_%type%_%lineindex% ;so the arrays are not changed
clipy:=clipy_%type%_%lineindex%
clipwidth:=clipwidth_%type%_%lineindex%
clipheight:=clipheight_%type%_%lineindex%

WinGetPos,sx,sy,swidth,sheight,ahk_id %winid%
IfInString,clipwidth,`%
{
   StringTrimRight,clipwidth,clipwidth,1
   clipwidth:=swidth*clipwidth/100
}
IfInString,clipheight,`%
{
   StringTrimRight,clipheight,clipheight,1
   clipheight:=sheight*clipheight/100
}

If clip_%type%_%lineindex%=0
If ghost_%type%_%lineindex%=0
   WinSet,Region,,ahk_id %winid%

WinGetPos,sx,sy,swidth,sheight,ahk_id %winid%
MouseGetPos,mx,my
mx-=%sx%
my-=%sy%

If clipx=Off
   clipx=0
If clipx=
   clipx=0
If clipy=
   clipy=0

If clipwidth=Width
   clipwidth=%swidth%
Else
If clipwidth=
   clipwidth=%swidth%

If clipwidth=Height
   clipwidth=%sheight%
Else
If clipheight=
   clipheight=%sheight%

If ghost_%type%_%lineindex%=1
{
   SetEnv,mx1,%mx%
   SetEnv,my1,%my%
   EnvAdd,mx1,2
   EnvAdd,my1,2
   EnvSub,mx,1
   EnvSub,my,1
   WinSet,Region,%clipx%-%clipy% %clipwidth%-%clipy% %clipwidth%-%clipheight% %clipx%-%clipheight% %clipx%-%clipy%  %mx%-%my% %mx1%-%my% %mx1%-%my1% %mx%-%my1% %mx%-%my%,ahk_id %winid%
}
Else
If clip_%type%_%lineindex%=1
{
   WinGetPos,sx,sy,swidth,sheight,ahk_id %winid%
   WinSet,Region,%clipx%-%clipy% w%clipwidth% H%clipheight%,ahk_id %winid%
}
Return

RUN:
If filepath_%type%_%lineindex%<>
   Run,% filepath_%type%_%lineindex%
Return

-----------------------------------------------------
(  )
( Montag, 28. März 2011 19:10:03 )
( http://www.donationcoder.com/Software/Skrommel/WinWarden/WinWarden.ahk )
But you can make simple scripts easily.

This script will do exactly what you want, and nothing else, ( bring a window to the front):

Code:
WinSet, Top, , %Title%

As will this one;
Code:
WinGetActiveTitle, activewindow
ControlClick, Button2, WindowTitle
Winset, AlwaysOnTop, On
Winset, AlwaysOnTop, Off
WinActivate %activewindow%
return


Lots more scripts here;

Scripts & Functions

and of course you can write your own.

Regards....Mike Connor
My System SpecsSystem Spec
.

28 Mar 2011   #4
JDobbsy1987

Windows 8.1 Pro x64
 
 

Thank you Mike Connor for such a great post

Although i have not got what i wanted from your post (I'm not saying it isn't possible) you did somehow point me in the right direction to the solution i was after.

Here is how i managed to get 2 Firefox browsers to alternately switch between each other ever 30 seconds:

<-- Information has been added below -->
My System SpecsSystem Spec
28 Mar 2011   #5
JDobbsy1987

Windows 8.1 Pro x64
 
 

With about 98% of help from - Spinner Software - Knowledge Base - Continous switch between two windows

If it helps, i have created a small video for the below (I know... I'm sad lol)
YouTube - How to switch between 2 windows

I use 2 files for this...

Start Switch.bat and Switch.vbs (The batch file only makes it a little easier to Stop/Start the script {in my opinion})

Batch File:
Code:
@ECHO OFF
@ECHO.
@ECHO Running script to switch between two windows
@ECHO.

CScript //nologo Switch.vbs

@ECHO.
@ECHO Script completed.
@ECHO.

pause
VBS File:
Code:
' Define the titles to look for
gTitle1		= "Google - Mozilla Firefox"
gTitle2		= "Bing - Mozilla Firefox"
gSecondsToWait	= 5

' If one of the window closes, this variable becomes False and the script exits.
Dim bWindowFound

' Create scripting object
Dim WShell, lRunUninstall
Set WShell = CreateObject("WScript.Shell")

Do
	' Activate the window that has a title matching, starting, or ending with gTitle1.
	bWindowFound = WShell.AppActivate(gTitle1)

	' Check if we activated the window ?
	If(bWindowFound) Then

		' Send ALT+SPACEBAR (system menu) M (move) ESCAPE (cancel) to activate window.
		WShell.SendKeys "% M{ESCAPE}"

		' Wait 60 seconds
		WScript.Sleep (gSecondsToWait * 1000)

		' You can either send ALT+TAB and then wait 60 seconds, or activate the other window
		'WShell.SendKeys "%{TAB}"

		' Switch to the other window
		bWindowFound = WShell.AppActivate(gTitle2)
		If(bWindowFound) Then

			' Send ALT+SPACEBAR (system menu) M (move) ESCAPE (cancel) to activate window.
			WShell.SendKeys "% M{ESCAPE}"

			' Wait 60 seconds
			WScript.Sleep (gSecondsToWait * 1000)
		End If
	End If

Loop Until Not bWindowFound

' Completed. Stop the script
WScript.Echo "Quitting script"
Set WShell = Nothing
WScript.quit(0)
Important part to change:
Code:
gTitle1		= "Google - Mozilla Firefox"
gTitle2		= "Bing - Mozilla Firefox"
gSecondsToWait	= 5
e.g.
Code:
gTitle1		= "- Notepad" <-- Window 1
gTitle2		= "Computer Management" <-- Window 2
gSecondsToWait	= 5 <-- Time between switch
Just maximise both windows and run the Batch/Script

Again, If it helps, i have created a small video
YouTube - How to switch between 2 windows

Regards,
JDobbsy1987
My System SpecsSystem Spec
28 Mar 2011   #6
FliGi7

XP / Win7 x64 Pro
 
 

So what's the goal of doing this? Doing a usability study or something?

The part about the title having to be the same was my initial point of concern as it changes constantly depending on what you're looking at, but I wasn't aware it was only going to be two windows at the same site with the same name and always open together at the same time.
My System SpecsSystem Spec
28 Mar 2011   #7
JDobbsy1987

Windows 8.1 Pro x64
 
 

Quote   Quote: Originally Posted by FliGi7 View Post
So what's the goal of doing this? Doing a usability study or something?

The part about the title having to be the same was my initial point of concern as it changes constantly depending on what you're looking at, but I wasn't aware it was only going to be two windows at the same site with the same name and always open together at the same time.
I am using this for a monitoring service across 2 browser screens so the actual titles won't change (sorry, i was unclear about that detail)

Regards,
JDobbsy1987
My System SpecsSystem Spec
Reply

 Batch/VBS File, 'Bring To Front' help




Thread Tools




Similar help and support threads
Thread Forum
Taskbar bug, doesn't bring programs to front.
This is the second time I've gotten this bug, and it seems to occur roughly two weeks after a fresh install. Long story short, I pin all of my favorite applications to the taskbar and when I click on a running program, I expect it to bring focus to that program (bring it to the front). Instead,...
General Discussion
How to run a batch file at logoff & some batch scripting help please
Hiya, I'd just like to run a simple batch file at logoff to backup some settings. I plan to use Robocopy, which is what i use to more thorough backups. Two questions: 1. How make it run by clicking Start > Shutdown? (i realise i could make a shutdown batch file and run it instead, but i'd...
Backup and Restore
Batch File that grabs file names from folder to insert into batch file
Ok I'm totally at a loss on how to word this so I'm just going to write it out the best that I can... :confused: First I have a batch file that I'm writing that will convert mp4 files to mp3 files (I have a lot) for a buddies band using ffmpeg. Here's the code that I'm using: ffmpeg -i...
General Discussion
Bring to front all windows for a certain application
Hello, trying to find some key+click combination to bring all windows for a given application to the top of z-order. For example, I have several Putty terminal windows open in the stacked taskbar icon and I want to display all of them, not just the last used. The only work-around I have found so...
General Discussion
batch file open file for program in the startup folder
I have a computer that is a drone specifically for an outside LED sign. This computer is designed to never shut off and doesn't have any other program on it besides Operating System and the sign software. I need to create a batch file that I can place in the "start-up" folder that will open the...
General Discussion
How to create a batch file that will move files based on the file type
How to create a batch file that will move files based on the file type? My Requirement : I need a batch file to copy all .doc files in all my HardDisk to a removable disk say (Z: drive) . Can anyone make it possible using a batch file?Please...Its urgent...
General Discussion


Our Sites

Site Links

About Us

Find Us

Windows 7 Forums is an independent web site and has not been authorized, sponsored, or otherwise approved by Microsoft Corporation. "Windows 7" and related materials are trademarks of Microsoft Corp.

© Designer Media Ltd

All times are GMT -5. The time now is 00:57.
Twitter Facebook Google+ Seven Forums iOS App Seven Forums Android App