Что нового

[Автоматизация] InfoZoom для EVE-Online

Insari

Осваивающий
Сообщения
34
Репутация
35
На форуме есть множество примеров разного рода увеличилок (луп, зумеров).
Данная версия привязана к окну EVE-Online и основана на уже предложенных ранее, с добавлением лога координат и цвета, сохранения этого лога в файл, и оконтовки в окне зума проверяемого пикселя.
Я использую режим окна EVE - "Fixed Window". Но можно использовать и любой другой.
Чтобы сдвинуть окно EVE в этом режиме, надо выбрать "Переместить" нажав правую кнопку мыши по значку клиента на панели задач (в Windows 7: Shift+ПКМ).
После чего, сначала необходимо сдвинуть окно клиента игры курсорными клавишами, и лишь потом поместить его в нужное место экрана с помощью мыши.


Лично мне она больше нравится, чем стандартные средства :-[

Последняя консольная версия 0.37
История изменений:
v 0.1
Первая публикация.
Есть 4x Zoom, есть лог, можно сохранять координаты точки в файл.

v 0.2
  • Немного поправил форматирование в логе, и добавил значение яркости в ToolTip'е.
  • Учитывая, что в первом варианте при наведении курсора на активные элементы окна EVE они подсвечивались (кнопки типа апроч и т.п.), добавлена функция 'Отключение воздействия курсора на приложение под ним '.
    Теперь нажав на тильду и неспеша двигая мышку, можно считать цвет под курсором не активируя нижележащий элемент.
  • Добавлена возможность при нажатии на alt+Pause указать описание выбранной точки.

v 0.3
  • Комбинация ctrl+* (на дополнительной клавиатуре) - изменяет коэф. увеличения zoom'a (x2, x4, x8, x16)
  • Alt+Pause - теперь вместе с описанием устанавливает ключевую точку, следующие точки получаемые нажатием на Pause будут задаваться относительно последней ключевой

v 0.34
  • Добавлена возможность движения "прицелом" zoom'a курсорными клавишами (alt+курсорные клавиши)
  • Добавлено еще одно увеличение теперь их 5: 2x, 4x, 8x, 16x, 32x
  • Добавлено отображение относительных координат в ToolTip'е (в скобках)
  • Исправлено отображение квадратика "прицела", теперь оно более соответствует просматриваемой точке
  • Устранено "прыганье" окна зума при смене режимов увеличения

v 0.37
  • Убрано увеличение 2x
  • Исправлен ряд ошибок в работе программы
  • CTRL+"`"(тильда) - "замораживает"/"размораживает" видимое отображение окна клиента
  • Работа Zoom'ера уже не привязана к режиму клиента Fixed Window
  • CTRL+"Pause" - скрыть/показать окно Zoom'a
  • Выход теперь через ALT+CTRL+"Pause"

Управление в Версии 0.37
  • "Pause" - сохранение в лог текущей позиции (если была задана хоть одна ключевая точка (КТ ), то дополнительно сохраняет координаты и относительно этой КТ)
  • ALT+"Pause" - сохранение в лог текущих абсолютных координат с созданием КТ и описанием "что это?" (описание вводим сами)
  • CTRL+"Pause" - скрыть/показать окно Zoom'a
  • ALT+CTRL+"Pause" - Выход
  • CTRL+"*" (доп. клавиатура) - Изменение zoom'a (4x, 8x, 16x, 32x)
  • ALT+"Курсорная клавиша" - сместить "прицел" zoom'a на одну точку в сторону
  • "`" (тильда) - Включение/Выключение воздействия курсора на приложение под ним
  • CTRL+"`"(тильда) - "Замораживает"/"Размораживает" видимое отображение окна клиента.
    "Заморозить" - Снять скриншот с клиента и поместить поверх
    "Разморозить" - Убрать скриншот с окна клиента

Код последней версии программы без GUI (Версия 0.37 ) :
Код:
#cs
	v 0.37
		- Убрано увеличение 2x
		- Исправлен ряд ошибок в работе программы
		- CTRL+"`"(тильда) - "замораживает"/"размораживает" видимое отображение окна клиента
		- Работа Zoom'ера уже не привязана к режиму клиента Fixed Window
		- CTRL+"Pause" - скрыть/показать окно Zoom'a
		- Выход теперь через ALT+CTRL+"Pause"
#ce
#include <file.au3>
#include <GDIPlus.au3>
#include <ScreenCapture.au3>
#include <GUIConstants.au3>
#include <WinAPI.au3>
#include <WindowsConstants.au3>
#Include <GuiListView.au3>

Opt("MouseCoordMode", 1)
Opt("TrayIconDebug", 1)
Opt("MustDeclareVars", 1)

HotKeySet("!{Up}", "StepUp")
HotKeySet("!{Down}", "StepDown")
HotKeySet("!{Right}", "StepRight")
HotKeySet("!{Left}", "StepLeft")
HotKeySet("^{NUMPADMULT}", "NextZoom")
HotKeySet("{PAUSE}", "SaveLog")
HotKeySet("!{PAUSE}", "SaveLogInput")
HotKeySet("^{PAUSE}", "HideZoom")
HotKeySet("^!{PAUSE}", "_Exit")
HotKeySet("`","HideCursor")
HotKeySet("^`", "Freeze")
OnAutoItExitRegister("_Exit")

Global $EVE_pos, $strLog = '', $fLog, $fLogName = 'Log.txt'
Global $DefaultEVE = '[TITLE:EVE; CLASS:triuiScreen]'
Global $pict, $hBit, $hGraph, $color
Global $freezePict, $hfreezeBit, $hfreezeGraph
Global $pictHide, $hBitHide, $hGraphHide
Dim $coord[2], $oldCoord[2], $pict, $hBit, $hGraph, $side = 32, $zoom = 8, $b_size[2] = [0,0]	; b_zise [8,30] для оконного режима
Dim $desk = WinGetPos("Program Manager") ; $desk - размеры рабочего стола
Global $sHide = 20, $toolTipDest[2] = [40, -40] ; Размер области резервируемой для "прикрытия" указателя мыши и расстояние ToolTip'а от указателя мыши
Global Const $WinZoomDX = 40, $WinZoomDY = 30	; Отступ от указателя мыши для размещения окна Zoom'a
Global $bHideCursor = False	; False - курсор не прикрыт и может воздействовать на активное окно, True - курсор в зоне $sHide от своего центра прикрыт и не воздействует на активное окно
Global $bFreeze = False	; True - отображение клиента "заморожено"
Global $bHideZoom = False, $bHideZoomChange = False	; $bHideZoom=False - окно зума отображается, $bHideZoom=True - скрыть окно зума
Global $bAbs = True, $cKeyX, $cKeyY ; Заданы ли аблютные или относительные координаты, и какова абсолютная точка отчета при выборе относительных координат
Global Const $aZoomLen = 4	; Количество элементов в массиве $aZoom и $aZoomSee
Global $zoomIndex = 2, $aZoom[$aZoomLen][2] = [[64, 4], [32,8], [16,16], [8,32]], $aZoomSee[$aZoomLen] = [4, 8, 16, 32]	; Массив с набором $side и $size для различных увеличений

Dim $size = $side*$zoom ; Размер сторон с учетом zoomа (увеличения)
Dim $pos[2] = [-1,-1], $rise[2] = [$size+2, $size+2] ; Позиция окна и его ростовые размеры (т.е. реальная ширина и высота)

Inic()
Main()

;;;;;;;;;;;;;;;;;;;;;;;;; Главная функция ;;;;;;;;;;;;;;;;;;;;;;;;;
Func Main()		
	While 1
		if $bHideZoom Then
			ToolTip("")
			Sleep(100)
			ContinueLoop
		EndIf
		$coord = MouseGetPos() ; Получаем новые координаты мыши
	
		#region Захват изображения
		$pict = _ScreenCapture_Capture("", $coord[0] - $side/2, $coord[1] - $side/2, $coord[0] + $side/2, $coord[1] + $side/2, False)
		$hBit = _GDIPlus_BitmapCreateFromHBITMAP($pict)
		$hGraph = _GDIPlus_GraphicsCreateFromHWND($hGUI)
		_GDIPlus_GraphicsDrawImageRectRect($hGraph, $hBit, 0, 0, $side, $side, 1, 1, $side*$zoom, $side*$zoom)
		#endregion Захват изображения
		
		if $bHideCursor Then		
			#region Захват изображения для прикрытия курсора
			$pictHide = _ScreenCapture_Capture("", $coord[0] - $sHide, $coord[1] - $sHide, $coord[0] + $sHide, $coord[1] + $sHide, False)
			$hBitHide = _GDIPlus_BitmapCreateFromHBITMAP($pictHide)
			$hGraphHide = _GDIPlus_GraphicsCreateFromHWND($childHide)
			_GDIPlus_GraphicsDrawImageRectRect($hGraphHide, $hBitHide, 0, 0, 2*$sHide, 2*$sHide, 0, 0, 2*$sHide, 2*$sHide)
			#endregion Захват изображения для прикрытия курсора
			WinMove($childHide, "", $coord[0]-$sHide, $coord[1]-$sHide, 2*$sHide, 2*$sHide)
			WinSetOnTop($childHide,"",1)
		Else
			WinSetOnTop($childHide,"",0)		
			WinMove($childHide, "", $coord[0]-$sHide, $coord[1]-$sHide, 0,0)
		EndIf		
	
		If $coord[0] <> $oldCoord[0] Or $coord[1] <> $oldCoord[1] Or $bHideZoomChange Then ; Если координаты мыши изменились, то ...
			$oldCoord = $coord
			If $coord[0] > $desk[2] - $side*($zoom + 0.5) - 2 Then $coord[0] = $coord[0] - $side*$zoom - $side - 2
			If $coord[1] > $desk[3] - $side*($zoom + 0.5) - 2 Then $coord[1] = $coord[1] - $side*$zoom - $side - 2
			WinMove("Zoo-o-o-M", "", $coord[0] + $WinZoomDX, $coord[1] + $WinZoomDY)
			$pos[0] = $coord[0] + $side/2 + $size/2		; - $zoom
			$pos[1] = $coord[1] + $side/2 + $size/2		; - $zoom                 
			Draw_Area()
			$color = PixelGetColor($coord[0], $coord[1])
			Local $x = $coord[0]-$EVE_pos[0]-$b_size[0]
			Local $y = $coord[1]-$EVE_pos[1]-$b_size[1]
			if $bAbs Then
				ToolTip("Left: " & $x & @CRLF & "Top: " & $y & @CRLF & "цвет: " & Hex($color,6) & @CRLF & 'яркость: '& TrimColor($color), $coord[0]+$toolTipDest[0], $coord[1]+$toolTipDest[1])
			Else
				ToolTip("Left: " & $x & " ("& $x-$cKeyX &")" & @CRLF & "Top: " & $y &" ("& $y-$cKeyY &")"& @CRLF & "цвет: " & Hex($color,6) & @CRLF & 'яркость: '& TrimColor($color), $coord[0]+$toolTipDest[0], $coord[1]+$toolTipDest[1])
			EndIf
		EndIf		
		$bHideZoomChange = False
		DisposeResources()
		Sleep(50)
	WEnd	
	Exit
EndFunc

;;;;;;;;;;;;;;;;;;;;;;;;; Функция инициализации ;;;;;;;;;;;;;;;;;;;;;;;;;
Func Inic()
	#region Поиск окна EVE, его активация и настройка параметров
	if Not WinExists($DefaultEVE) Then 
		MsgBox(48, "", "Окно клиента не найдено")
		Exit
	EndIf
	WinActivate($DefaultEVE)
	WinWaitActive($DefaultEVE)
	$EVE_pos = WinGetPos($DefaultEVE)
	Dim $coordAbs = MouseGetPos()
	Opt("MouseCoordMode", 2)
	Dim $coordR = MouseGetPos()
	Opt("MouseCoordMode", 1)
	$b_size[0] = $coordAbs[0]-$coordR[0]-$EVE_pos[0]		; Определяем тип режима клиента EVE
	$b_size[1] = $coordAbs[1]-$coordR[1]-$EVE_pos[1]
	#endregion  Поиск окна EVE и его активация

	CreateLogGUI()
	UpdLog('Скрытие курсора установлено в '& $bHideCursor)	
	Global $hGUI = GUICreate("Zoo-o-o-M", $rise[0], $rise[1], $pos[0], $pos[1], $WS_POPUP, $WS_EX_TOPMOST)
	GUISetState()
	Create_Draw_Area($pos, $rise)

	_GDIPlus_Startup()
EndFunc

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Функции ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Func StepUp()
	MouseMove($coord[0],$coord[1]-1,0)
EndFunc

Func StepDown()
	MouseMove($coord[0],$coord[1]+1,0)
EndFunc

Func StepRight()
	MouseMove($coord[0]+1,$coord[1],0)
EndFunc

Func StepLeft()
	MouseMove($coord[0]-1,$coord[1],0)
EndFunc

Func NextZoom()
	$zoomIndex += 1
	if $zoomIndex > $aZoomLen-1 Then $zoomIndex = 0	; Следим, чтобы индекс массива не вышел за существуещий набор увеличений (у нас их 4-ре вида x16, x8, x4, x2)
	$side = $aZoom[$zoomIndex][0]
	$zoom = $aZoom[$zoomIndex][1]
	$size = $side*$zoom
	UpdLog('Увеличение установлено в x'& $aZoomSee[$zoomIndex])
	GUIDelete($Bottom)
	GUIDelete($Right)
	GUIDelete($Left)
	GUIDelete($Top)
	GUIDelete($GUI)
	GUIDelete($childHide)
	GUIDelete($guiHide)
	DisposeResources()
	Create_Draw_Area($pos, $rise)
EndFunc

Func HideZoom()
	$bHideZoom = Not $bHideZoom
	if $bHideZoom Then		; Если необходимо скрыть окно зума
		ToolTip("")
		GUIDelete($Bottom)
		GUIDelete($Right)
		GUIDelete($Left)
		GUIDelete($Top)
		GUIDelete($GUI)
		GUIDelete($childHide)
		GUIDelete($guiHide)
		DisposeResources()
		GUIDelete($hGUI)
		$bHideZoomChange = False
	Else
		$hGUI = GUICreate("Zoo-o-o-M", $rise[0], $rise[1], $pos[0], $pos[1], $WS_POPUP, $WS_EX_TOPMOST)
		GUISetState()
		Create_Draw_Area($pos, $rise)
		$bHideZoomChange = True
	EndIf	
EndFunc

Func Freeze()	; Замораживаем/Размораживаем отображение клиента игры
	$bFreeze = not $bFreeze
	if $bFreeze Then	; Если замораживаем, то создаем окно
		if not $bHideZoom Then
			HideZoom()
;~ 			Sleep(200)
		EndIf
		Local $winFreeze = WinGetPos($DefaultEVE)
		Local $Right = $winFreeze[0]+$winFreeze[2]
		Local $Bottom = $winFreeze[1]+$winFreeze[3]
		Global $hFreezeGUI = GUICreate("Freeze", $winFreeze[2], $winFreeze[3], $winFreeze[0], $winFreeze[1], $WS_POPUP, $WS_EX_TOPMOST)
		GUISetBkColor(0)		
		#region Захват изображения
		$freezePict = _ScreenCapture_Capture("", $winFreeze[0], $winFreeze[1], $Right, $Bottom, False)
		GUISetState()
		$hfreezeBit = _GDIPlus_BitmapCreateFromHBITMAP($freezePict)
		$hfreezeGraph = _GDIPlus_GraphicsCreateFromHWND($hFreezeGUI)
		_GDIPlus_GraphicsDrawImageRectRect($hfreezeGraph, $hfreezeBit, 0, 0, $winFreeze[2], $winFreeze[3], 0, 0, $winFreeze[2], $winFreeze[3])
		#endregion Захват изображения
		if $bHideZoom Then
			HideZoom()
;~ 			Sleep(200)
		EndIf
		StepRight()		
		StepLeft()
		UpdLog('Окно клиента "Заморожено"')
	Else
		_GDIPlus_GraphicsDispose($hfreezeGraph)
		_GDIPlus_ImageDispose($hfreezeBit)
		_WinAPI_DeleteObject($freezePict)
		GUIDelete($hFreezeGUI)
		UpdLog('Окно клиента "Разморожено"')
	EndIf	
EndFunc

Func HideCursor()	; Убираем/Включаем влияние курсора на нижележащее приложение
	$bHideCursor = Not $bHideCursor
	if $bHideCursor Then
		WinMove($childHide, "", 1000, 1000, 2*$sHide, 2*$sHide)
	EndIf	
	UpdLog('Скрытие курсора установлено в '& $bHideCursor)
EndFunc

#region Отрисовываем оконтовку центра
Func Create_Draw_Area($pos, $rise)
	Local $x = $pos[0]
	Local $y = $pos[1]
	Global $ScanWidth = $zoom, $ScanHeight = $zoom
	Global $guiHide = GUICreate("", 0, 0, 0, 0, $WS_POPUP) ; Создаем окошечко для сокрытия курсора от приложения над которым он проходит
	Global $childHide = GUICreate("hide", 2*$sHide, 2*$sHide, $x, $y, $WS_POPUP, -1, $guiHide)	; С этим дочерним именем в последствии и работаем для сокрытия курсора
	GUISetState()
	;;; Создаем четырмя окнами рамочку для оконтовки
	Global $GUI = GUICreate("", 0, 0, $x, $y, $WS_POPUP) ; Материнское окно для остальных
	Global $Top = GUICreate("Top Line", $ScanWidth, 2, $x, $y, $WS_POPUP, -1, $GUI) ; Ширина, Высота, Левый край, Верхний край, стиль, exStyle=-1, Идентификатор ранее созданного окна. Вновь создаваемое окно оказывается его потомком. 
	GUISetBkColor(0xFFffff)
	GUISetState()
	Global $Left = GUICreate("Left Line", 2, $ScanHeight, $x, $y, $WS_POPUP, -1, $GUI)
	GUISetBkColor(0xFFffff)
	GUISetState()
	Global $Right = GUICreate("Right Line", 2, $ScanHeight, $x + $ScanWidth - 2, $y, $WS_POPUP, -1, $GUI)
	GUISetBkColor(0xFFffff)
	GUISetState()
	Global $Bottom = GUICreate("Bottom Line", $ScanWidth, 2, $x, $y + $ScanHeight, $WS_POPUP, -1, $GUI)
	GUISetBkColor(0xFFffff)
	GUISetState()
	;;; Завершаем инициализацию (создание из четырех окон) рамочки для оконтовки, прорисовываем её первый раз
EndFunc

Func Draw_Area()
;~ 	Sleep(80)
	Local $x=$coord[0] + $side*$zoom/2 + $WinZoomDX - $zoom/2 + 1, $y=$coord[1] + $side*$zoom/2 + $WinZoomDY - $zoom/2 + 1
	WinMove($Top, "", $x, $y, $ScanWidth, 1)
	WinMove($Left, "", $x, $y, 1, $ScanHeight)
	WinMove($Right, "", $x + $ScanWidth - 1, $y, 1, $ScanHeight)
	WinMove($Bottom, "", $x, $y + $ScanHeight, $ScanWidth, 1)

	WinSetOnTop($Top,"",1)
	WinSetOnTop($Left,"",1)
	WinSetOnTop($Right,"",1)
	WinSetOnTop($Bottom,"",1)
EndFunc
#endregion Отрисовываем оконтовку центра

#Region - Создание и управление окном лога
Func CreateLogGUI()
	$fLog = FileOpen($fLogName , 1)
	If $fLog = -1 Then
		MsgBox(0, "Error", "Файл лога не может быть открыт для записи.")
		Exit
	EndIf	
	FileWrite($fLog, @CRLF)
	Local $MainGUI = GUICreate("My GUI", 0, 0, 0, 0, $WS_POPUP)
	Global $UpTime = TimerInit()
	Local $Log = GUICreate("Log", 600, 200, 1026, 228, $WS_SYSMENU , -1, $MainGUI)
	Global $ListView = GuiCtrlCreateListView("GTime|LTime|Событие", 0, 0, 600, 200)
	_GUICtrlListView_SetColumnWidth($Listview, 2, 600)
	GUICtrlSetFont(-1, 10)
	WinSetOnTop($Log,"",1)
	GUICtrlSetBkColor($listview, 0x000000)
	GUICtrlSetColor($listview, 0xFFFFFF)
	GUISetState(@SW_SHOW)
	Global $LogInfo 
EndFunc

Func SaveLog()
	Local $x = $coord[0]-$EVE_pos[0]-$b_size[0]
	Local $y = $coord[1]-$EVE_pos[1]-$b_size[1]
	if not $bAbs Then
		$x -= $cKeyX
		$y -= $cKeyY
		UpdLog("[" & $x+$cKeyX & ", " & $y+$cKeyY & "] >>> Относительные (" & $x & ", " & $y & ")  Цвет: " & Hex($color,6) & '   /  Яркость: '& TrimColor($color))
	Else
		UpdLog("(" & $x & ", " & $y & ")  Цвет: " & Hex($color,6) & '   /  Яркость: '& TrimColor($color))
	EndIf	
	FileWrite($fLog, $strLog & @CRLF)
EndFunc

Func SaveLogInput()
	Local $x = $coord[0]-$EVE_pos[0]-$b_size[0]
	Local $y = $coord[1]-$EVE_pos[1]-$b_size[1]
	Local $answer = InputBox("Описание отметки", "Введите описание данной отметки:", "В этой точке ...", "", -1, -1, 0, 0)
	UpdLog('Описание : '& $answer & ". (" & $x & ", " & $y & ")  Цвет: " & Hex($color,6) & '   /  Яркость: '& TrimColor($color))
	FileWrite($fLog, $strLog & @CRLF)
	$bAbs = False
	$cKeyX = $x
	$cKeyY = $y
EndFunc

Func UpdLog($Text=0)
		If _GUICtrlListView_GetItemCount($listview) > 50 Then _GUICtrlListView_DeleteItem($listview, 0)
		If $LogInfo <> $Text Then
			$LogInfo = $Text
			$strLog = @HOUR&':'&@MIN&':'&@SEC&"|"&StringFormat("%02d:%02d:%02d", _
			Int(Round(TimerDiff($Uptime)/1000)/60/60), _
			Int((Round(TimerDiff($Uptime)/1000)-Int(Round(TimerDiff($Uptime)/1000)/60/60)*3600)/60), _
			Int(Round(TimerDiff($Uptime)/1000)-Int(Round(TimerDiff($Uptime)/1000)/60/60)*3600- _ 
			Int((Round(TimerDiff($Uptime)/1000)-Int(Round(TimerDiff($Uptime)/1000)/60/60)*3600)/60)*60))&"| "& $LogInfo
			GuiCtrlCreateListViewItem($strLog, $listView)		; Скролируем, чтобы всегда видеть последнее сообщение в списке (если в ручную не прокручивали, конечно)
		EndIf
		_GUICtrlListView_Scroll($listview,0,20)
EndFunc
	
Func TrimColor($TargetTrim)
#cs TrimarkColor - Comment Start
Исползуется для получения из цвета в формате RGB значение яркости пикселя. Возвращает значение от 0 до 255.
Скорость:
Функция выполняется за ~0.06-0.10 мс.
#ce TrimColor - Comment End
	Dim $a, $as, $as1, $as2, $a_fin
	$a = Hex($TargetTrim, 6)
	$a_fin = (Dec(StringTrimRight($a, 4)) + Dec(StringTrimLeft(StringTrimRight($a, 2), 2)) + Dec(StringTrimLeft($a, 4)))/3
	$TargetTrim = Round($a_fin, 0)
	Return $TargetTrim
EndFunc
#EndRegion - Создание и управление окном лога

;;; Освобождаем ресурсы (попытка борьбы с утечкой памяти)
Func DisposeResources()
	#region Освобождаем ресурсы
	_GDIPlus_GraphicsDispose($hGraph)
	_GDIPlus_ImageDispose($hBit)
	_WinAPI_DeleteObject($pict)
	#endregion  Освобождаем ресурсы
	#region Освобождаем ресурсы "прикрытия"
	_GDIPlus_GraphicsDispose($hGraphHide)
	_GDIPlus_ImageDispose($hBitHide)
	_WinAPI_DeleteObject($pictHide)
	#endregion  Освобождаем ресурсы "прикрытия"
	_GDIPlus_GraphicsDispose($hfreezeGraph)	; Освобождаем ресурсы глобального прикрытия
	_GDIPlus_ImageDispose($hfreezeBit)
	_WinAPI_DeleteObject($freezePict)
EndFunc

Func _Exit()
	DisposeResources()
    _GDIPlus_Shutdown()	
	FileClose($fLog)
	ToolTip("")
	Exit
EndFunc

GUI версии
Версия 0.42
История изменений:
v 0.4
Первая GUI версия
  • Теперь "`"(тильда) - "Замораживает"/"Размораживает" видимое отображение окна клиента
  • Теперь CTRL+"`"(тильда)- Включение/Выключение воздействия курсора на приложение под ним
  • Введен модульный (в несколько файлов) принцип построения программы
  • Добавлен начальный GUI-интерфейс

v 0.42
  • Исправлена ошибка в работе клика по координатам контрольной точки (расположенной ниже грида лога)
  • Исправлена ошибка в работе кнопки "Перейти к координатам из строки лога"
  • Команды с (тильда) и Ctrl+(тильда) перенесены на 'Scroll Lock' и Ctrl+'Scroll Lock' (потому, что я пользуюсь при наборе текста буквой 'ё')
  • КТ теперь можно создавать по Alt+'`'(тильда), при этом вводить описание обязательно
  • Alt+'Pause' теперь просто добавляет точку с описанием, не делая её контрольной
  • Клик по описанию контрольной точки расположенному ниже списка лога вызывает переход на координаты последней ключевой точки
  • Теперь можно указав строку лога, взять её как контрольную точку (создав новую строку), если описания в выбранной строчке нет - то необходимо будет ввести его
  • При выборе строки в логе мы имеем возможность перейти на эти координаты
  • Перед "заморозкой" теперь активируется окно клиента и на скрине больше не остается следов главной формы программы

v 0.45 (от 30.09.2011):
  • Кодирование и проверка декодирования запомненных символов.
  • Теперь измерение цвета под курсором динамическое, даже в том случае если не происходит перемещения мыши
  • Добавлена возможность вычисления статистики по максимальному, минимальному значению цвета в выбранной точке, среднему значению и среднему квадратическому отклонению (сигма)
  • Кодирование символов.

Исправлены ошибки:
  • Исправлена ошибка "скачка" окна зума при приближении к краю экрана

Скрин версии 0.42
InfoZoom.jpg


Управление для версии 0.45:
  • "Pause" - сохранение в лог текущей позиции (если была задана хоть одна ключевая точка (КТ ), то дополнительно сохраняет координаты и относительно этой КТ)
  • ALT+"Pause" - аналогично "Pause", но дополнительно необходимо ввести описание для точки
  • ALT+"`"(тильда) - сохранение в лог текущих абсолютных координат с созданием КТ и описанием "что это?" (описание вводим сами)
  • CTRL+"+" (на дополнительной клавиатуре) - Начать сбор статистики в точке под курсором
  • CTRL+"-" (на дополнительной клавиатуре) - Закончить сбор статистики в указанной ранее точке и проанализировать результат
  • CTRL+"Pause" - скрыть/показать окно Zoom'a
  • ALT+CTRL+"Pause" - Выход
  • CTRL+"*" (доп. клавиатура) - Изменение zoom'a (4x, 8x, 16x, 32x)
  • ALT+"Курсорная клавиша" - сместить "прицел" zoom'a на одну точку в сторону
  • CTRL+"Scroll Lock" - Включение/Выключение воздействия курсора на приложение под ним
  • "Scroll Lock" - "Замораживает"/"Размораживает" видимое отображение окна клиента.
    "Заморозить" - Снять скриншот с клиента и поместить поверх
    "Разморозить" - Убрать скриншот с окна клиента

Изменения в 0.45 (от 30.09.2011):
  • Кодирование и проверка декодирования запомненных символов.
  • Теперь измерение цвета под курсором динамическое, даже в том случае если не происходит перемещения мыши
  • Добавлена возможность вычисления статистики по максимальному, минимальному значению цвета в выбранной точке, среднему значению и среднему квадратическому отклонению (сигма)
    Статистика собирается с указанной точки. При этом нахождения постоянно там курсора не требуется.

Исправлены ошибки:
  • Исправлена ошибка "скачка" окна зума при приближении к краю экрана
 
Автор
I

Insari

Осваивающий
Сообщения
34
Репутация
35
[Автоматизация] Re: [Автоматизация] InfoZoom для EVE-Online

Вышла версия 0.37.
Особенности работы:
  • Определяет координаты курсора мыши, а также цвет точки под ним и его яркость
  • Можно использовать четыре режима увеличения (4x, 8x, 16x, 32x)
  • Отображает лог работы с программой в отдельном окне
  • Сохраняет лог зафиксированных с помощью "Pause" и ALT+"Pause" точек
  • После задания хоть одной точки с описанием (ALT+"Pause") сохраняемые неименованые координаты будут содержать относительное смещение от этой точки
  • Может быть отключено воздействие курсора на приложение под ним,
    т.е. элементы клиента реагирующие на мышь, не будут на неё реагировать
  • Отображение окна клиента может быть визуально "заморожено",
    т.е. клиент будет закрыт сверху другим окном, на котором (с соблюдением координат и цветов) будет нарисован снятый с клиента скрин
 
Автор
I

Insari

Осваивающий
Сообщения
34
Репутация
35
Вышла версия 0.4
Это первая GUI версия.
Особенности работы:
  • Всё что умела делать версия 0.37 умеет и эта
  • Немного изменено управление (подробнее в главном посте)
  • Немного изменен формат лога
  • Текущий статус элементов приложения отображается в строке состояния (zoom, активность курсора, скрытие приложения, "заморозка" клиента)
  • Увеличение можно изменять и через ползунок на форме
  • Кнопкой "Считать данные строки лога" координаты, цвет и яркость из выбранной строки становится более доступной для копирования
  • Во вкладке "Настройки" можно указать свое описание строки поиска клиента, отличное от установленной по умолчанию
  • Выход из программы CTRL+ALT+"Pause" или Файл>Выход

Управление (в версии 0.4):
  • "Pause" - сохранение в лог текущей позиции (если была задана хоть одна ключевая точка (КТ ), то дополнительно сохраняет координаты и относительно этой КТ)
  • ALT+"Pause" - сохранение в лог текущих абсолютных координат с созданием КТ и описанием "что это?" (описание вводим сами)
  • CTRL+"Pause" - скрыть/показать окно Zoom'a
  • ALT+CTRL+"Pause" - Выход
  • CTRL+"*" (доп. клавиатура) - Изменение zoom'a (4x, 8x, 16x, 32x)
  • ALT+"Курсорная клавиша" - сместить "прицел" zoom'a на одну точку в сторону
  • CTRL+"`" (тильда) - Включение/Выключение воздействия курсора на приложение под ним
  • "`"(тильда) - "Замораживает"/"Размораживает" видимое отображение окна клиента.
    "Заморозить" - Снять скриншот с клиента и поместить поверх
    "Разморозить" - Убрать скриншот с окна клиента
 
Автор
I

Insari

Осваивающий
Сообщения
34
Репутация
35
Вышла версия 0.41

Изменилось управление.
Добавился ряд функций.
Подробнее смотрите главный пост в 'История изменений' для GUI версий.
 

Enemy

Знающий
Сообщения
42
Репутация
7
Подскажите пожалуйста, какого применение данного скрипта?
Вместо Window Info?
 
Автор
I

Insari

Осваивающий
Сообщения
34
Репутация
35
Подсказываю.
Данный скрипт один из вариантов т.н. инструментов разработчика.
Используется как "ручная увеличилка", при написании скриптов основанных на анализе экрана приложения (в данном случае EVE).
Режим 'Magnify' используемый AutoIt Window Info лично мне не нравится, во всем остальном "данный скрипт" и AutoIt Window Info имеют разные задачи.

Если из описания управления и истории изменения версий, плохо угадывается функциональность, прошу простить и более адекватно указать, как правильно оформлять описание.
 

AllWay

Знающий
Сообщения
16
Репутация
9
Insari сказал(а):
При выборе строки в логе мы имеем возможность перейти на эти координаты
В версии 041 - Эта функция работает не корректно.
Записана позиция в логе 200х200, при нажатии на кнопку "Перейти к координатам из строки лога" курсор переходит на позицию 122х119, а по идее должен был перейти на позицию 200х200.
Если можно поправьте это расхождение в координатах.
 
Автор
I

Insari

Осваивающий
Сообщения
34
Репутация
35
Версия 0.42

  • Исправлена ошибка в работе клика по координатам контрольной точки (ниже грида лога)
  • Исправлена ошибка в работе кнопки "Перейти к координатам из строки лога"
 
Автор
I

Insari

Осваивающий
Сообщения
34
Репутация
35
Версия 0.44

- Начала OCR (помощь в кодировании и проверке декодирования символов. Пороги для SI - 0x57, 0x75 - login)
- Появилось контекстное меню у некоторых элементов формы

(Последние изменения март 2011)
 
Автор
I

Insari

Осваивающий
Сообщения
34
Репутация
35
Версия 0.45
(от 30.09.2011)

- Теперь измерение цвета под курсором динамическое, даже в том случае если не происходит перемещения мыши
- Исправлена ошибка "скачка" окна зума при приближении к краю экрана
- Добавлена возможность вычисления статистики по максимальному, минимальному значению цвета в выбранной точке, среднему значению и среднему квадратическому отклонению (сигма)

P.S.
В следствии непонятного сбоя в редакторе форм, для корректного отображения декодированной строки в OCR
в файле InfoZoomGUI надо заменить 63-ю строчку на немного измененную:
Код:
$lbOCRDecodeString = GUICtrlCreateLabel("", 96, 248, 600, 16, $WS_BORDER)
 
Верх