Trigger Autohotkey on new window
Something like this would work nicely: http://www.autohotkey.com/forum/topic63673.html
and in case the link changes or goes down for any reason:
;========================================================================
;
; Template: WinTrigger (former OnOpen/OnClose)
; Description: Act upon (de)activation/(un)existance of programs/windows
; Online Ref.: http://www.autohotkey.com/forum/viewtopic.php?t=63673
;
; Last Update: 15/Mar/2010 17:30
;
; Created by: MasterFocus
; http://www.autohotkey.net/~MasterFocus/AHK/
;
; Thanks to: Lexikos, for improving it significantly
; http://www.autohotkey.com/forum/topic43826.html#267338
;
;========================================================================
;
; This template contains two examples by default. You may remove them.
;
; * HOW TO ADD A PROGRAM to be checked upon (de)activation/(un)existance:
;
; 1. Add a variable named ProgWinTitle# (Configuration Section)
; containing the desired title/ahk_class/ahk_id/ahk_group
;
; 2. Add a variable named WinTrigger# (Configuration Section)
; containing the desired trigger ("Exist" or "Active")
;
; 3. Add labels named LabelTriggerOn# and/or LabelTriggerOff#
; (Custom Labels Section) containing the desired actions
;
; 4. You may also change CheckPeriod value if desired
;
;========================================================================
#Persistent
; ------ ------ CONFIGURATION SECTION ------ ------
; Program Titles
ProgWinTitle1 = ahk_class Notepad
WinTrigger1 = Exist
ProgWinTitle2 = Calculator
WinTrigger2 = Active
; SetTimer Period
CheckPeriod = 200
; ------ END OF CONFIGURATION SECTION ------ ------
SetTimer, LabelCheckTrigger, %CheckPeriod%
Return
; ------ ------ ------
LabelCheckTrigger:
While ( ProgWinTitle%A_Index% != "" && WinTrigger := WinTrigger%A_Index% )
if ( !ProgRunning%A_Index% != !Win%WinTrigger%( ProgWinTitle := ProgWinTitle%A_Index% ) )
GoSubSafe( "LabelTriggerO" ( (ProgRunning%A_Index% := !ProgRunning%A_Index%) ? "n" : "ff" ) A_Index )
Return
; ------ ------ ------
GoSubSafe(mySub)
{
if IsLabel(mySub)
GoSub %mySub%
}
; ------ ------ CUSTOM LABEL SECTION ------ ------
LabelTriggerOn1:
LabelTriggerOff1:
LabelTriggerOn2:
MsgBox % "A_ThisLabel:`t" A_ThisLabel "`nProgWinTitle:`t" ProgWinTitle "`nWinTrigger:`t" WinTrigger
Return
; ------ END OF CUSTOM LABEL SECTION ------ ------
Please note I did not write this code.
This does it with AutoHotkey
#Persistent
Gui +LastFound
hWnd := WinExist()
DllCall("RegisterShellHookWindow", UInt,hWnd)
MsgNum := DllCall("RegisterWindowMessage", Str,"SHELLHOOK")
OnMessage(MsgNum, "ShellMessage")
Return
ShellMessage(wParam,lParam) {
Local k
If (wParam = 1) { ; HSHELL_WINDOWCREATED := 1
NewID := lParam
SetTimer, Action, -1
} else {
;SetTimer, Action, -1 ; this is to make it execute even on old windows. Probably more CPU intensive.
}
}
Action:
; here put the action that you want to run when a new window is detected
Return