Что нового

Узнать ClassnameNN посредством скрипта

Alkantel

Новичок
Сообщения
45
Репутация
1
Добрый день! Возникла необходимость посредством скомпилированого скрипта (не при помощи стандартной утилиты) узнать класс элемента, который находится под курсором. Есть ли такая возможность?
И еще вопрос, дабы не плодить темы: возможно ли следить за мышью и делать определенные действия во время клика ЛКМ, например?
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
Alkantel [?]
И еще вопрос, дабы не плодить темы
Предупреждение За нарушение общих правил (пункт В.4):
Не лепите несколько вопросов разной тематики в один пост. По типу "Ребят, а ещё такой вопрос...". Каждый вопрос в свою тему.


С уважением, ваш Глобальный модератор.




Есть ли такая возможность?
Кликайте по функциям.
Код:
_WinAPI_WindowFromPoint()
_WinAPI_GetAncestor()
_WinAPI_GetClassName()
 

InnI

AutoIT Гуру
Сообщения
4,912
Репутация
1,429
Alkantel
Код:
#include <WinAPISys.au3>
#include <Misc.au3>

Global $Point, $Ctrl, $Parent

Do
  If _IsPressed("01") Then
    $Point = _WinAPI_GetMousePos()
    $Ctrl = _WinAPI_WindowFromPoint($Point)
    $Parent = _WinAPI_GetAncestor($Ctrl, 2)
    ConsoleWrite(GetClassnameNN($Ctrl) & @CRLF)
    Do
    Until Not _IsPressed("01")
  EndIf
  Sleep(10)
Until 0

Func GetClassnameNN($Control)
  If $Control = $Parent Then Return
  Local $Class, $Wins, $Inst = 0
  $Class = _WinAPI_GetClassName($Control)
  If @error Then Return
  $Wins = _WinAPI_EnumChildWindows($Parent, False)
  If IsArray($Wins) Then
    For $i = 1 To $Wins[0][0]
      If $Wins[$i][1] = $Class Then $Inst += 1
      If $Wins[$i][0] = $Control Then Return $Class & $Inst
    Next
  EndIf
  Return
EndFunc
 
Верх