Gui, +LastFound
hwnd:=WinExist()
hDesktop:=DllCall("GetDesktopWindow")
VarSetCapacity(RECT,16,0)
VarSetCapacity(XFORM,24,0)
NumPut(1,XFORM,0,"float")
NumPut(1,XFORM,12,"float")
NumPut(1,XFORM,16,"float")
NumPut(1,XFORM,20,"float")
hbr:=DllCall("CreateSolidBrush","uint",0x507fff) ; 0x50a4f4
hrgn:=DllCall("CreateRectRgn","int",0,"int",0,"int",0,"int",0)
DllCall( "RegisterShellHookWindow","uint",hwnd)
MsgNum:=DllCall("RegisterWindowMessage","str","SHELLHOOK")
OnMessage(MsgNum,"ShellMessage")
Return
ShellMessage(wParam,lParam)
{
global hwnd
If (wParam = (HSHELL_WINDOWACTIVATED:=4))
{
hwnd:=lParam
SetTimer, DrawActiveWindowFrame, -1
}
}
DrawActiveWindowFrame:
If (hwnd!=hDesktop)
{
If (prevhwnd!=hwnd)
{
hdc:=DllCall("GetWindowDC","uint",prevhwnd)
DllCall("GetWindowRgn","uint",prevhwnd,"uint",hrgn)
DllCall("CombineRgn","uint",hrgn,"uint",hrgn,"uint",hrgn_2,"int",(RGN_XOR:=3))
DllCall("RedrawWindow","uint",prevhwnd,"uint",0,"uint",hrgn,"uint",1|2|4|128|256|512|1024)
DllCall("ReleaseDC","uint",hwnd,"uint",hdc)
DllCall("DeleteObject","uint",hrgn_2)
}
If hwnd
{
hdc:=DllCall("GetWindowDC","uint",hwnd)
DllCall("GetRandomRgn","uint",hdc,"uint",hrgn,"int",4)
dwCount:=DllCall("GetRegionData","uint",hrgn,"uint",0,"uint",0)
VarSetCapacity(RgnData,dwCount,0)
DllCall("GetRegionData","uint",hrgn,"uint",dwCount,"uint",&RgnData)
hrgn_2:=DllCall("ExtCreateRegion","uint",&XFORM,"uint",dwCount,"uint",&RgnData)
DllCall("GetWindowRect","uint",hwnd,"uint",&RECT)
DllCall("OffsetRgn","uint",hrgn_2,"int",-(x_offset:=NumGet(RECT)),"int",-(y_offset:=NumGet(&RECT+4)))
DllCall("FrameRgn","uint",hdc,"uint",hrgn_2,"uint",hbr,"int",4,"int",4)
DllCall("ReleaseDC","uint",hwnd,"uint",hdc)
prevhwnd:=hwnd
}
}
Return
Return
Esc::
DllCall("DeleteObject","uint",hrgn)
DllCall("DeleteObject","uint",hbr)
DllCall("DeregisterShellHookWindow","uint",hwnd)
ExitApp
/*
RDW_INVALIDATE = 1
RDW_INTERNALPAINT = 2
RDW_ERASE = 4
RDW_VALIDATE = 8
RDW_NOINTERNALPAINT = 16
RDW_NOERASE = 32
RDW_NOCHILDREN = 64
RDW_ALLCHILDREN = 128
RDW_UPDATENOW = 256
RDW_ERASENOW = 512
RDW_FRAME = 1024
RDW_NOFRAME = 2048
*/