monsoon
Advanced Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Есть скрипт, показывающий координаты каретки кликом левой кнопки мыши: Код: ~LButton:: Sleep, 100 CoordMode, Caret (A_CaretX = "" && AccObjectFromPoint()) ToolTip % "A_CaretX = " A_CaretX "`nA_CaretY = " A_CaretY Return AccObjectFromPoint(ByRef _idChild_ = "", x = "", y = "") { static VT_DISPATCH := 9, h := DllCall("LoadLibrary", Str, "oleacc", Ptr) (x = "" || y = "") ? DllCall("GetCursorPos", Int64P, pt) : pt := x & 0xFFFFFFFF | y << 32 VarSetCapacity(varChild, 8 + 2*A_PtrSize, 0) if DllCall("oleacc\AccessibleObjectFromPoint", Int64, pt, PtrP, pAcc, Ptr, &varChild) = 0 Return ComObjEnwrap(VT_DISPATCH, pAcc, 1), _idChild_ := NumGet(varChild, 8, "UInt") } | Но координаты определяются не всегда (например, в FireFox, если адресная строка не пустая и курсор находится не в ее конце или в Хроме, Анки и т.д.) Возможно ли в таких случаях определять координаты левого нижнего угла контрола, в котором находится каретка или контрола, ближайшего выше по иерархии, для которого эти координаты определяются вышеприведенным скриптом? |