scriptolog
Новичок
- Сообщения
- 4
- Репутация
- 0
Про AutoIt Window Info и аналоги знаю.
Этот вариант делал для себя. Все очень просто, но возможно бото-писателям будет полезно =)
- Показывает hWnd, координаты и цвет под курсором (активного окно)
- При постановке на паузу, копирует значения в буфер обмена. Т.е. в редакторе потом просто жмем ctrl+v и вставляем значения.
- Можно задать координаты для перехода курсора по ним.
Весь функционал описан при запуске скрипта.
Этот вариант делал для себя. Все очень просто, но возможно бото-писателям будет полезно =)
- Показывает hWnd, координаты и цвет под курсором (активного окно)
- При постановке на паузу, копирует значения в буфер обмена. Т.е. в редакторе потом просто жмем ctrl+v и вставляем значения.
- Можно задать координаты для перехода курсора по ним.
Весь функционал описан при запуске скрипта.
Код:
; AutoIt Version: 3
; Language: Russian
; Platform: WinXP/Win7
; Author: scriptolog
;=========================================================================================================================================
#include <GUIConstants.au3>
#include <WinAPI.au3>
#include <Array.au3>
#include <WindowsConstants.au3>
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <StaticConstants.au3>
Global $hWnd, $X, $Y, $Color
Global $BGR_Color ; цвет в формате BGR
Global $Paused
HotKeySet("{PAUSE}", "TogglePause") ; При нажатии PAUSE на клавиатуре
HotKeySet("^{PAUSE}", "Terminate") ; При нажатии ctrl+ PAUSE на клавиатуре выходим из скрипта
HotKeySet("!{PAUSE}", "ShowMessage") ;; При нажатии Alt+ PAUSE ввод координат
$coord_mode = 2 ; 1=absolute, 0=relative, 2=client.
Opt("PixelCoordMode", $coord_mode) ;Отсчет координат пикселей от левого верхнего угла клиентской части окна
Opt("MouseCoordMode", $coord_mode) ;Отсчет координат мыши от левого верхнего угла клиентской части окна
_GO()
Func _GO()
While 1
_GetMouseCoordinates()
Sleep(150)
WEnd
EndFunc
Func _GetMouseCoordinates()
$pos = MouseGetPos()
$Color=PixelGetColor($pos[0],$pos[1])
$X = $pos[0]
$Y = $pos[1]
$hWnd=WinGetHandle('[ACTIVE]')
$BGR_Color = _ColorConvert($Color) ; конвертируем в BGR
#Region --- CodeWizard generated code Start ---
;ToolTip features: Text=Yes, X Coordinate=Yes, Y Coordinate=Yes, Title=Yes, Info icon
If Not IsDeclared("sToolTipAnswer") Then Local $sToolTipAnswer
$sToolTipAnswer = ToolTip(@LF _
& "Активное окно hWnd - " & $hWnd & @LF _
& "Координаты курсора :" & @LF _
& "X = " & $X & @LF _
& 'Y = ' & $Y & @LF _
& 'Цвет под курсором в RGB- ' & hex($Color,6) & ' или ' & $Color & @LF _
& 'Цвет под курсором в BGR- ' & hex($BGR_Color,6) & ' или ' & $BGR_Color & @LF _
& @LF _
& "Pause - Пауза (копирует в буфер координаты и цвет в hex) " & @LF _
& "alt+Pause - Ввести координаты для перемещения курсора " & @LF _
& "ctrl+Pause - Выход" & @LF _
& @LF _
,Default,Default, 'ОПРЕДЕЛЕНИЕЕ КООРДИНАТ И ЦВЕТА под курсором',1,0)
#EndRegion --- CodeWizard generated code End ---
EndFunc
Func _ColorConvert($nColor);RGB to BGR or BGR to RGB
Return _
BitOR(BitShift(BitAND($nColor, 0x000000FF), -16), _
BitAND($nColor, 0x0000FF00), _
BitShift(BitAND($nColor, 0x00FF0000), 16))
EndFunc
Func TogglePause() ;Pause
$Paused = NOT $Paused
ClipPut ("RGB " & $X & " " & $Y & " " & hex($Color,6) & @LF _
& @CRLF & "BGR " & $X & " " & $Y & " " & hex($BGR_Color,6)) ; копируем в буфер координаты x y и цвет в 2х форматах - RGB и BGR
While $Paused
sleep(100)
ToolTip('Script is "Paused"',1,0)
WEnd
ToolTip("RUN",0,0)
EndFunc
Func Terminate() ; CTRL+Pause
Exit 0
EndFunc
Func ShowMessage() ; Alt+Pause
;$hWnd=WinGetHandle('[ACTIVE]')
ToolTip("")
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Координаты", 202, 110, 301, 216)
$X = GUICtrlCreateInput("0", 56, 24, 121, 21)
$Y = GUICtrlCreateInput("0", 56, 48, 121, 21)
$Label1 = GUICtrlCreateLabel("X", 8, 32, 11, 17)
$Label2 = GUICtrlCreateLabel("Y", 8, 48, 11, 17)
$OK = GUICtrlCreateButton("OK", 64, 80, 75, 25)
$Label3 = GUICtrlCreateLabel("Введите координаты", 48, 5, 110, 17)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $OK
$X =GUICtrlRead($X)
$Y =GUICtrlRead($Y)
GUISetState(@SW_HIDE)
WinActivate($hWnd)
WinWaitActive($hWnd)
MouseMove($X,$Y)
_GO()
EndSwitch
WEnd
EndFunc