Что нового

[Окна, Диалоги] получение Handle НЕАКТИВНОГО окна под курсором

Dimmak

Знающий
Сообщения
185
Репутация
9
Использую следующую функцию для получения Handle НЕАКТИВНОГО окна под курсором, но
функция выполняется с паузой. Можно ли ускорить выполнение? :scratch:

Код:
Func _WinHandleUnderCursor()

		$Struct = DllStructCreate($tagPoint)
			DllStructSetData($Struct, "x", MouseGetPos(0))
			DllStructSetData($Struct, "y", MouseGetPos(1))

			$hWinHandle = _WinAPI_WindowFromPoint($Struct)
			$hWinHandle = _WinAPI_GetAncestor($hWinHandle, $GA_ROOT)

	Return $hWinHandle

EndFunc   ;==>_WinHandleUnderCursor
 

Zaramot

I ♥ AutoIt
Сообщения
1,160
Репутация
660
Другой вариант:
Код:
Func GetHoveredHwnd($i_xpos, $i_ypos)
    Local $iRet = DllCall("user32.dll", "int", "WindowFromPoint", "long", $i_xpos, "long", $i_ypos)
    If IsArray($iRet) Then
        Return HWnd($iRet[0])
    Else
        Return SetError(1, 0, 0)
    EndIf
EndFunc


Пример:
Код:
HotKeySet('{ESC}', '_Exit')

While 1
	ToolTip(GetHoveredHwnd(MouseGetPos(0), MouseGetPos(1)))
WEnd

Func GetHoveredHwnd($i_xpos, $i_ypos)
    Local $iRet = DllCall("user32.dll", "int", "WindowFromPoint", "long", $i_xpos, "long", $i_ypos)
    If IsArray($iRet) Then
        Return HWnd($iRet[0])
    Else
        Return SetError(1, 0, 0)
    EndIf
EndFunc

Func _Exit()
	Exit
EndFunc
 
Автор
Dimmak

Dimmak

Знающий
Сообщения
185
Репутация
9
Ссори! Это я штангу дал. В моем примере все нормально работает. :ok:
Zaramot Отличный пример. Только в твоем случае получаем hWnd ЭЛЕМЕНТА окна.
 
Верх