Что нового

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

DJ_Tommy

Продвинутый
Все таки решил осилить и написать свои небольшие скрипты для каждодневных операций, но тут же возник вопрос - не хочу писать автоподстраивающийся скрипт пока, но тут соответственно нужно иметь точные координаты нужных мне объектов. Пока работал в экранном режиме - все гуд, а тут захотелось все ж как обычно играю - в полноэкранном режиме. В качестве задумки решил сделать такой вариант:
запускаем скрпит и он раз в 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

«Улыбайтесь, господа!»
Команда форума
Глобальный модератор
Вариант:
Код:
#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

Модератор
Локальный модератор
А в чём смысл данного скрипта если мы имеем Au3Info идущий сразу же в комплекте установочника?
 

`p r o x y

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

hikki

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

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


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

Belfigor

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

DJ_Tommy

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

Lexx98

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

Belfigor

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

DJ_Tommy

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

Belfigor

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

DJ_Tommy

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

DJ_Tommy

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

Belfigor

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

DJ_Tommy

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

Luke

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

DJ_Tommy

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