Malcev пишет:Кому-то удобно читать подобный код?
Если аккуратнее написать, то вполне, если привычно.
Acc_ObjectFromPoint(ByRef _idChild_ = "", x = "", y = "") {
If DllCall("oleacc\AccessibleObjectFromPoint"
, "Int64", x = "" || y = "" ? 0 * DllCall("GetCursorPos", "Int64*", pt) + pt : x & 0xFFFFFFFF | y << 32
, "Ptr* ", pacc, "Ptr", VarSetCapacity(varChild, 8 + 2 * A_PtrSize, 0) * 0 + &varChild) = 0
Return ComObjEnwrap(9, pacc, 1), _idChild_ := NumGet(varChild, 8, "UInt")
}
Но можно и так.
Acc_ObjectFromPoint(ByRef _idChild_ = "", x = "", y = "") {
VarSetCapacity(varChild, 8 + 2 * A_PtrSize, 0)
If (x = "" || y = "")
DllCall("GetCursorPos", "Int64*", pt)
Else
pt := x & 0xFFFFFFFF | y << 32
If DllCall("oleacc\AccessibleObjectFromPoint", "Int64", pt, "Ptr* ", pacc, "Ptr", &varChild) = 0
Return ComObjEnwrap(9, pacc, 1), _idChild_ := NumGet(varChild, 8, "UInt")
}
Ты бы также написал?
В данном случае создаётся излишне одна переменная, только если x y указаны, или убирается умножение и сложение если не указаны (там можно было и без них).
("", DllCall("GetCursorPos", "Int64*", pt)) . pt
Но когда результаты выражений сохраняются в переменную чтобы далее однажды применится, то это в целом не очень гуд, но это не про этот пример.
По вопросам возмездной помощи пишите на
E-Mail: serzh82saratov@mail.ru Telegram:
https://t.me/sergiol982Win10x64
AhkSpy,
Hotkey,
ClockGui