;//Mon, Jan 22, 2007 --- 1/22/07, 1:19:19am ImageWait(ByRef p_x, ByRef p_y, p_x1, p_y1, p_x2, p_y2, p_img, p_waitms=0, p_checkinterval="") { if (p_checkinterval="") p_checkinterval=519 ts:=A_TickCount Loop { ImageSearch, p_x, p_y, p_x1, p_y1, p_x2, p_y2, %p_img% if (errorlevel=0 || p_waitms && A_TickCount-ts>=p_waitms) break if (p_waitms && (A_TickCount-ts)+p_checkinterval>=p_waitms) p_checkinterval:=(p_waitms-(A_TickCount-ts))/2 if (p_checkinterval>19) Sleep, %p_checkinterval% } } PixelWait(ByRef p_x, ByRef p_y, p_x1, p_y1, p_x2, p_y2, p_color, p_shades="", p_opts="", p_waitms=0, p_checkinterval="") { if (RegExMatch(p_color, "i)^[0-9a-f]{6}$")) p_color:="0x" p_color p_opts_bkp:=p_opts p_opts:=RegExReplace(p_opts, "i)\bSlow\b") if (p_opts=p_opts_bkp) p_opts:=p_opts " Fast" p_opts_bkp:=p_opts p_opts:=RegExReplace(p_opts, "i)\bBGR\b") if (p_opts=p_opts_bkp) p_opts:=p_opts " RGB" if (p_checkinterval="") p_checkinterval=519 ts:=A_TickCount Loop { PixelSearch, p_x, p_y, p_x1, p_y1, p_x2, p_y2, %p_color%, %p_shades%, %p_opts% if (errorlevel=0 || p_waitms && A_TickCount-ts>=p_waitms) break if (p_waitms && (A_TickCount-ts)+p_checkinterval>=p_waitms) p_checkinterval:=(p_waitms-(A_TickCount-ts))/2 if (p_checkinterval>19) Sleep, %p_checkinterval% } } Tooltip(p_msg="", p_pos="", p_num="", p_time="", p_wait="") { if (RegExMatch(p_pos, "x(\d+)", m)) x:=m1 if (RegExMatch(p_pos, "y(\d+)", m)) y:=m1 ToolTip, %p_msg%, %x%, %y%, %p_num% if (p_msg="") return MoveTooltip(p_pos) if (p_time) if (p_wait) { Sleep, p_time Gosub, Base_RemoveTooltip } else { static Base_RemoveTooltip1_p_num, Base_RemoveTooltip2_p_num, Base_RemoveTooltip3_p_num , Base_RemoveTooltip4_p_num, Base_RemoveTooltip5_p_num, Base_RemoveTooltip6_p_num , Base_RemoveTooltip7_p_num, Base_RemoveTooltip8_p_num, Base_RemoveTooltip9_p_num , Base_RemoveTooltip10_p_num Loop { Loop { tti:=A_Index if (tti>10) { tti_overflow++ break } if (!Base_RemoveTooltip%tti%_p_num) { tti_overflow= break } } if (!tti_overflow) break else if (tti_overflow<=3) { Sleep, 319 } else { SplitPath, A_LineFile, A_LineFileName msgbox, 16, , %A_LineFileName% Error: Too many Tooltip timers at once! return } } Base_RemoveTooltip%tti%_p_num:=p_num SetTimer, Base_RemoveTooltip%tti%, %p_time% } return Base_RemoveTooltip: Tooltip("", "", p_num) SetTimer, Base_RemoveTooltip, Off return Base_RemoveTooltip1: Tooltip("", "", Base_RemoveTooltip1_p_num) SetTimer, Base_RemoveTooltip1, Off Base_RemoveTooltip1_p_num= return Base_RemoveTooltip2: Tooltip("", "", Base_RemoveTooltip2_p_num) SetTimer, Base_RemoveTooltip2, Off Base_RemoveTooltip2_p_num= return Base_RemoveTooltip3: Tooltip("", "", Base_RemoveTooltip3_p_num) SetTimer, Base_RemoveTooltip3, Off Base_RemoveTooltip3_p_num= return Base_RemoveTooltip4: Tooltip("", "", Base_RemoveTooltip4_p_num) SetTimer, Base_RemoveTooltip4, Off Base_RemoveTooltip4_p_num= return Base_RemoveTooltip5: Tooltip("", "", Base_RemoveTooltip5_p_num) SetTimer, Base_RemoveTooltip5, Off Base_RemoveTooltip5_p_num= return Base_RemoveTooltip6: Tooltip("", "", Base_RemoveTooltip6_p_num) SetTimer, Base_RemoveTooltip6, Off Base_RemoveTooltip6_p_num= return Base_RemoveTooltip7: Tooltip("", "", Base_RemoveTooltip7_p_num) SetTimer, Base_RemoveTooltip7, Off Base_RemoveTooltip7_p_num= return Base_RemoveTooltip8: Tooltip("", "", Base_RemoveTooltip8_p_num) SetTimer, Base_RemoveTooltip8, Off Base_RemoveTooltip8_p_num= return Base_RemoveTooltip9: Tooltip("", "", Base_RemoveTooltip9_p_num) SetTimer, Base_RemoveTooltip9, Off Base_RemoveTooltip9_p_num= return Base_RemoveTooltip10: Tooltip("", "", Base_RemoveTooltip10_p_num) SetTimer, Base_RemoveTooltip10, Off Base_RemoveTooltip10_p_num= return } MoveTooltip(p_pos) { Process, Exist pid:=errorlevel IfWinNotExist, ahk_pid %pid% ahk_class tooltips_class32 msgbox, 16, , Error: MoveTooltip(%p_pos%): Tooltip not found! WinGetPos, x, y, w, h if (RegExMatch(p_pos, "i)\bx(\d+)\b", m)) x:=m1 else if (RegExMatch(p_pos, "i)\b(S(?:creen)?)?(?:xl|(?:T|C|B)?L(?:eft)?(?:T|C|B)?)\b", m)) x:=((m1="")?(A_ScreenLeftWA()):0) else if (RegExMatch(p_pos, "i)\b(S(?:creen)?)?(?:xr|(?:T|C|B)?R(?:ight)?(?:T|C|B)?)\b", m)) x:=((m1="")?(A_ScreenWidthWA()):A_ScreenWidth)-w else if (RegExMatch(p_pos, "i)\b(S(?:creen)?)?(?:xc|(?:T|C|B)?C(?:enter)?(?:T|C|B)?)\b", m)) x:=(((m1="")?(A_ScreenWidthWA()):A_ScreenWidth)-w)/2 if (errorlevel!=0) msgbox, 16, , Error: errorlevel(%errorlevel%) if (RegExMatch(p_pos, "y(\d+)", m)) y:=m1 else if (RegExMatch(p_pos, "i)\b(S(?:creen)?)?(?:yt|(?:L|C|R)?T(?:op)?(?:L|C|R)?)\b", m)) y:=((m1="")?(A_ScreenTopWA()):0) else if (RegExMatch(p_pos, "i)\b(S(?:creen)?)?(?:yb|(?:L|C|R)?B(?:ottom)?(?:L|C|R)?)\b", m)) y:=((m1="")?(A_ScreenHeightWA()):A_ScreenHeight)-h else if (RegExMatch(p_pos, "i)\b(S(?:creen)?)?(?:yc|(?:L|C|R)?C(?:enter)?(?:L|C|R)?)\b", m)) y:=(((m1="")?(A_ScreenHeightWA()):A_ScreenHeight)-h)/2 if (errorlevel!=0) msgbox, 16, , Error: errorlevel(%errorlevel%) WinMove, x, y } SysGet(p_type, p_which="") { if (RegExMatch(p_type, "i)^(?:(?:Monitor)?W(?:ork)?A(?:rea)?)$")) { SysGet, WA, MonitorWorkArea if p_which=top return WATop else if (p_which="bottom" || p_which="height") return WABottom else if p_which=left return WALeft else if (p_which="right" || p_which="width") return WARight } } A_ScreenWidthWA() { return SysGet("WA", "width") } A_ScreenHeightWA() { return SysGet("WA", "height") } A_ScreenTopWA() { return SysGet("WA", "top") } A_ScreenBottomWA() { return SysGet("WA", "bottom") } A_ScreenLeftWA() { return SysGet("WA", "left") } A_ScreenRightWA() { return SysGet("WA", "right") } ;/* Switch-Case */ switch(p_switch="", return_last=0) { static last_switch if return_last return last_switch last_switch:=p_switch } case(p_case) { return p_case=switch(0,1) } ;/* dump var */ d(var, levels="", p_lastchainvar="") { return var "(" deref(var, levels, p_lastchainvar) ")" } ;/* deref var */ deref(var, levels="", p_lastchainvar="") { Global deref_lastchain if levels= levels=1 deref_lastchain:=var Loop, %levels% { if !var break var:=%var% deref_lastchain:=deref_lastchain " -> " var } if p_lastchainvar %p_lastchainvar%:=deref_lastchain return var } ;/* Test deref var */ /* var1=bingo var2=var1 var3=var2 var4=var3 var5=var4 msgbox, % d("var5") "`n`nderef_lastchain(" deref_lastchain ")" exitapp */