;On a 1 second poll ; If Chrome window is active ; Get mouse position ; Get Chrome header area bounds ; If mouse position is in the Chrome header area bounds and bookmarks are expanded or mouse position is not in the Chrome header area bounds and bookmarks aren't expanded ; Send Chrome bookmark toggle combo ; End If ; End If ;Loop #include #include "AssocArrays.au3" Global $avTopBarHeight AssocArrayCreate($avTopBarHeight, 5) While 1 $hWnd = WinActive("[CLASS:Chrome_WidgetWin_1]") $aControlPos = ControlGetPos($hWnd, "", "Chrome_RenderWidgetHostHWND1") If $hWnd And Not @error Then Local $aMousePos = MouseGetPos() Local $aBoundPos[4] $aBoundPos[0] = WinGetPos($hWnd)[1] $aBoundPos[1] = $aBoundPos[0] + (WinGetPos($hWnd)[3] - ControlGetPos($hWnd, "", "Chrome_RenderWidgetHostHWND1")[3]) $aBoundPos[2] = WinGetPos($hWnd)[0] $aBoundPos[3] = $aBoundPos[2] + WinGetPos($hWnd)[2] If (Not AssocArrayExists($avTopBarHeight, "" & $hWnd & "." & BitAND(WinGetState($hWnd), 32))) Then AssocArrayAssign($avTopBarHeight, "" & $hWnd & "." & BitAND(WinGetState($hWnd), 32), $aBoundPos[1] - $aBoundPos[0]) ;Assumes bookmarks are currently not expanded EndIf If (IsInside($aMousePos, $aBoundPos) And Not IsOpen($aBoundPos, $hWnd)) Then Sleep(100) Send("^+b") Sleep(50) EndIf If (Not IsInside($aMousePos, $aBoundPos) And IsOpen($aBoundPos, $hWnd)) Then Sleep(100) Send("^+b") Sleep(50) EndIf EndIf sleep(100) WEnd Func IsOpen(ByRef $vBoundPos, ByRef $hWnd) Local $iMinTopBarHeight = AssocArrayGet($avTopBarHeight, "" & $hWnd & "." & BitAND(WinGetState($hWnd), 32)) Local $iCurrentTopBarHeight = $vBoundPos[1] - $vBoundPos[0] If ($iMinTopBarHeight > $iCurrentTopBarHeight And $iCurrentTopBarHeight > 0) Then AssocArrayAssign($avTopBarHeight, "" & $hWnd & "." & BitAND(WinGetState($hWnd), 32), $iCurrentTopBarHeight) Return 0 EndIf If ($iMinTopBarHeight = $iCurrentTopBarHeight) Then Return 0 EndIf If ($iMinTopBarHeight < $iCurrentTopBarHeight) Then Return 1 EndIf EndFunc Func IsInside(ByRef $vMousePos, ByRef $vBoundPos) Return ($vMousePos[0] < $vBoundPos[3] And $vMousePos[0] > $vBoundPos[2] And $vMousePos[1] < $vBoundPos[1] And $vMousePos[1] > $vBoundPos[0]) EndFunc