Что нового

Сохранение данных под курсором в файл

DJ_Tommy

Продвинутый
Сообщения
234
Репутация
57
Все таки решил осилить и написать свои небольшие скрипты для каждодневных операций, но тут же возник вопрос - не хочу писать автоподстраивающийся скрипт пока, но тут соответственно нужно иметь точные координаты нужных мне объектов. Пока работал в экранном режиме - все гуд, а тут захотелось все ж как обычно играю - в полноэкранном режиме. В качестве задумки решил сделать такой вариант:
запускаем скрпит и он раз в 5-10 сек снимает данные о координате курсора и цвете под ним и сохраняет эти данные в файл в виде так называемого лога из 3 столбцов (х,у, цвет).

т.е. снимаем координаты командой $xy=MouseGetPos()
Получаем цвет командой $col=Hex(PixelGetColor($xy[0],$xy[1])) - не знаю конечно правильность такой вложенности
Записываем в файл - тут я в растерянности какой команддой это сделать с учетом того игра в полноэкранном режиме
издаем Beep

Соответственно все это в цикле с остановкой по горячей клавише.

зы. Строго не судите - я не программист, и новичек, т.к. автоит интересует только в мере применения к еве пока что (далее надеюсь начну установщики групп программ писать)


Вот что у меня получилось:
Код:
;Ждем 5 секунд и выдаем сигнал готовности
;Через 5 секунд будет считано положение мыши и
;цвет пикселя под ним и записано в файл dan.txt
;Итого будет 10 циклов что бы не запутаться
HotKeySet("^{BREAK}", "huhu")
$ff = FileOpen("dan.txt", 1)
$ii=0
Sleep(5000)
Beep(500,10)
Sleep(5000)
While $ii<=10
$xy=MouseGetPos()
$col=Hex(PixelGetColor($xy[0],$xy[1]),6)
Beep(500,10)
FileWriteLine($ff, '  ' & $xy[0] & '   '& $xy[1] & '  '& $col)
Sleep(5000)
$ii=$ii+1
WEnd
FileClose($ff)
Func huhu()
    Exit 0
EndFunc
 

`p r o x y

«Улыбайтесь, господа!»
Команда форума
Глобальный модератор
Сообщения
596
Репутация
156
Вариант:
Код:
#NoTrayIcon
Opt('GUIOnEventMode',		1)
Opt('TrayOnEventMode',		1)
Opt('TrayMenuMode',			1)

#include <Constants.au3>
#Include <Misc.au3>

Global	Const $sProName		= 'CID Checker'
Global	Const $sProNameWS	= StringStripWS($sProName, 8)
Global	Const $sProVerNo	= '0.1'
Global	Const $sProVer		= 'v' & $sProVerNo
Global	Const $sProNameVer	= $sProName & ' ' & $sProVer
Global	Const $sProIDText	= $sProNameVer & ' [ID] ' & $sProNameVer

If NOT _Singleton($sProIDText, 1) Then _Pro_Exit()
AutoItWinSetTitle(@AutoItPID & ' ' & $sProIDText)


Global 	$sColorLog_FilePath = 'ColorLog.txt'
Global	$fColorLog_Timer 	= 1; min
Global	$fColorLog_State, $hTrayStartStop

HotKeySet('{F1}', '_ColorLog_StartStop')
HotKeySet('{F4}', '_Pro_Exit')


$hTrayStartStop = TrayCreateItem('Старт (F1)')
	TrayItemSetOnEvent(-1, '_ColorLog_StartStop')

TrayCreateItem('')
TrayCreateItem('Закрыть (F4)')
	TrayItemSetOnEvent(-1, '_Pro_Exit')

TraySetIcon('Shell32.dll', -138)
TraySetClick(8)
TraySetOnEvent($TRAY_EVENT_PRIMARYUP, '_ColorLog_StartStop')
TraySetState()


While 1
	Sleep(10)
WEnd
Func _Pro_Exit()
	Exit
EndFunc


Func _ColorLog()
	$iXY = MouseGetPos()
	$iColor = Hex(PixelGetColor($iXY[0], $iXY[1]), 6)

	FileWriteLine($sColorLog_FilePath, $iXY[0] & '  ' & $iXY[1] & '  ' & $iColor)
	Beep(500, 50)
EndFunc

Func _ColorLog_StartStop()
	If Not $fColorLog_State Then
		$fColorLog_State = 1
		AdlibEnable('_ColorLog', $fColorLog_Timer*60000)
		TrayItemSetText($hTrayStartStop, 'Стоп (F1)')
		TraySetIcon('Shell32.dll', -110)
	Else
		$fColorLog_State = 0
		AdlibDisable()
		TrayItemSetText($hTrayStartStop, 'Старт (F1)')
		TraySetIcon('Shell32.dll', -138)
	EndIf
EndFunc
 

Belfigor

Модератор
Локальный модератор
Сообщения
3 566
Репутация
933
А в чём смысл данного скрипта если мы имеем Au3Info идущий сразу же в комплекте установочника?
 

`p r o x y

«Улыбайтесь, господа!»
Команда форума
Глобальный модератор
Сообщения
596
Репутация
156
Belfigor сказал(а):
А в чём смысл данного скрипта если мы имеем Au3Info идущий сразу же в комплекте установочника?
это вопрос мне? помойму такой же скрипт как у топик-стартера в шапке, только в подарочной обертке ;D
 

hikki

Продвинутый
Сообщения
233
Репутация
99
Да, тоже немного недопонял зачем это, просто чтоб понять в какую сторону думать. Если решается вопрос о том чтоб взять несколько координат то зачем нужен таймер? удобнее же выбирать самому момент снятия координат. Посмотри в эту сторону.
Код:
#Include <Misc.au3>

Do
Sleep(100)
$xy= MouseGetPos()
$col=Hex(PixelGetColor($xy[0],$xy[1]),6)
Until _IsPressed(12)


скрипт спокойно себе висит и ждет пока ты не нажмеш на альт, в этот момент запоминаются координаты цвет
 

Belfigor

Модератор
Локальный модератор
Сообщения
3 566
Репутация
933
`p r o x y сказал(а):
Belfigor сказал(а):
А в чём смысл данного скрипта если мы имеем Au3Info идущий сразу же в комплекте установочника?
это вопрос мне? помойму такой же скрипт как у топик-стартера в шапке, только в подарочной обертке ;D
Да не, вопрос был тредстартеру :smile:
 
Автор
D

DJ_Tommy

Продвинутый
Сообщения
234
Репутация
57
Ок. Отвечу. Что такое ау3инфо - я не знаю. Стандартным средством от аутоайти - виндовс инфо не получится - ибо я в полноэкранном режиме.
Использовать кнопки это конечно самый лучший вариант - спасибо отписавшимся. Я как раз в понедельник буду дорабатывать.
Писал на коленке чисто для тренировки, т.к. последний раз пользовался летом когда написал простой скрипт скидывания из карго в джетисон руды.
Я ж написал - только учусь, и даже то что написал в первом посте сделал до того как привели пример как делать правильно, делал чисто по хелпу, и еще - вся загвоздка у мну была именно сохранения в файл - но это я переборол то же используя хелп. Спасибо всем за помощь. Белфигор - мож разъяснишь нубу что это за AU3Info ??
 

Lexx98

Продвинутый
Сообщения
272
Репутация
73
Да в папке с установленным автоитом вроде как должна быть утилита "Au3Info.exe", которая показывает всю необходимую информацию. В частности, в еве больше всего я использую именно для того, чтобы узнавать цвет пикселов и координаты.
Кстати, ты вполне можешь переключиться на оконный режим, поузнавать утилитой все цвета, тебя интересующие, записать их, и переключиться опять в полноэкранный режим. Ну или скрипт делать, чтобы туда-сюда режим не клацать.
 

Belfigor

Модератор
Локальный модератор
Сообщения
3 566
Репутация
933
DJ_Tommy сказал(а):
Спасибо всем за помощь. Белфигор - мож разъяснишь нубу что это за AU3Info ??
Да все верно. Au3Info это именно то про что только что написал Лекс. Разве что сохранять лог в виде координат и цвета она не может, инфу о каждом пикселе надо самому копировать из нее в скрипт.
 
Автор
D

DJ_Tommy

Продвинутый
Сообщения
234
Репутация
57
Спасибо всем за помощь.
Белфигор - нет, ручками это не интересно.
Кстати, для распознования цвета лучше еще один скрипт написать - который будет записывать в файл цвета всех пикселей в линии по оси х, и если нужно по оси у., ибо точность установки курсора недостаточная.
 

Belfigor

Модератор
Локальный модератор
Сообщения
3 566
Репутация
933
Попробуй все же Au3Info, там есть лупа которая увеличивает до огромных размеров поле 6х6 пикселей под курсором :smile:
 
Автор
D

DJ_Tommy

Продвинутый
Сообщения
234
Репутация
57
Belfigor сказал(а):
Попробуй все же Au3Info, там есть лупа которая увеличивает до огромных размеров поле 6х6 пикселей под курсором :smile:
а вот за это ОГРОМНОЕ спасибо. нуно потестить ..... так что мне еще разбираться и разбираться
 
Автор
D

DJ_Tommy

Продвинутый
Сообщения
234
Репутация
57
Видимо я тупой - я так и не понял как в полноэкранной еве юзать ау3инфо ... и еще - а как лупу использовать?
 

Belfigor

Модератор
Локальный модератор
Сообщения
3 566
Репутация
933
Запускаешь Au3Info, далее Options => Magnify (или же нажать Ctrl+Alt+M). В полноэкранном использовать нормально не удастся. Окно Au3Info будет перекрыто окном евы, во время передвижения курсора с включенной лупой оно будет пытаться вылезти на верх, будет снова перекрываться окном евы и тд и тп. Но ничего не мешает тебе запустить игру в оконном режиме и с помозью какой-нибудь софтины просто растянуть до размеров рабочего стола. Тогда окно Au3Info будет нормально висеть поверх евы и ты сможешь нормально пользоваться Лупой. Вопрос зачем тебе работать с евой в полноэкранном режиме? Запустил 1024х768 и радуйся жизни :smile:
 
Автор
D

DJ_Tommy

Продвинутый
Сообщения
234
Репутация
57
Belfigor сказал(а):
Запускаешь Au3Info, далее Options => Magnify (или же нажать Ctrl+Alt+M). В полноэкранном использовать нормально не удастся. Окно Au3Info будет перекрыто окном евы, во время передвижения курсора с включенной лупой оно будет пытаться вылезти на верх, будет снова перекрываться окном евы и тд и тп. Но ничего не мешает тебе запустить игру в оконном режиме и с помозью какой-нибудь софтины просто растянуть до размеров рабочего стола. Тогда окно Au3Info будет нормально висеть поверх евы и ты сможешь нормально пользоваться Лупой. Вопрос зачем тебе работать с евой в полноэкранном режиме? Запустил 1024х768 и радуйся жизни :smile:
Спс .. а я то уж думал что я баран не замечаю самых простых вещей ... Я хочу работать именно с полноэкранной версией (ну не знаю даже почему - мож из вредности). Так что пока в текстовый файл отсканирую координаты и цвета а далее будет видно.
а, кстати, я использую разрешение 1280х800 (у мну ноутбук)
 

Luke

Знающий
Сообщения
64
Репутация
14
Можно в полноэкранном режиме просто делать скриншот , а потом уже из него в любом графическом редакторе при нужном тебе увеличении узнавать цвет и координаты, хоть вручную хоть программно.
 
Автор
D

DJ_Tommy

Продвинутый
Сообщения
234
Репутация
57
Luke сказал(а):
Можно в полноэкранном режиме просто делать скриншот , а потом уже из него в любом графическом редакторе при нужном тебе увеличении узнавать цвет и координаты, хоть вручную хоть программно.
Не спорю, но мне допустим как то удобнее все это в игре делать .....
 
Верх