1 (изменено: DaVinchi, 2011-01-21 18:42:22)

Тема: AHK: Автозаполнение переменных

В общем то есть небольшой скрипт. Скрипт рабочий, подогнанный под мой компьютер.
Хотелось бы его модернизировать и доделать по уму, что бы он работал на всех компьютерах и версиях Windows.
В общем то вот сам скрипт.

FileInstall,  d:\AutoClickerScripts\set.ico, %A_WorkingDir%\set.ico, 1
Menu, Tray, Icon, %A_WorkingDir%\set.ico                                      
WinWaitActive, Ragnarok
CoordMode, Pixel, Screen

    Loop
    {
            PixelSearch, Px, Py, 8, 33, 26, 46, 0x000000           ; Сверяем цвет на соответсвие
    If ErrorLevel = 1                      ; Не совпало - скрпт нажимает на Ф4
        {
            Send, {F4}        ; Хочется что бы посылаемая кнопка устонавливалась по желанию    
                    }
    else                                          ; Если цвет не изменяется слип и снова проверка цвета на соответствие.
        {
            Sleep, 200
        }
    }
Home:: Pause
End:: ExitApp

1. Из скрипта видно, что он устанавливает файлик иконки в трее. Но авто удаление после закрытие скрипта нету. Как это сделать умно? Я смотрел оператор OnExit, но так и не понял как его применить.
2. В принципе меня больше всего и интересует этот пункт!!! Суть следующая. На разных компьютерах координаты места, где нужно искать соответствующий цвет пикселя, разные. Каждый раз переписывать скрипт под индивидуальные потребности не хочется.
Вот и появился вопрос:
Возможно ли как то вписать в скрипт другой скрипт? Ну например вот такой вот:

Home::
MouseGetPos, MouseX, MouseY
MsgBox x=%MouseX%, y=%MouseY%
return

Т.е. Я запускаю скрипт, мне выдает сообщение: Поставьте мышку на "такое то" место и нажмите Home. Я навожу и нажымаю Home, скрипт записывает получиные координаты в Px и выдает следующее сообщение: Передвинте мышь на "другое" место и нажмите Хоме. Я перевожу мышь на место и нажымаю Home. Скрипт записывает координаты как Py. И выдает сообщение: Нажмите кнопку для применения в скрипте(т.е. так кнопка которая будет нажиматься в скрипте вместо указаного мною Ф4). Я нажал кнопку и нажал мышкой "Ок". Все. Скрипт выполняет постоянно главное свое предназначение, т.е. вот эту часть:

Loop
    {
            PixelSearch, Px, Py, 8, 33, 26, 46, 0x000000
    If ErrorLevel = 1
        {
            Send, {F4}            
                    }
    else
        {
            Sleep, 200
        }
    }

2

Re: AHK: Автозаполнение переменных

onexit

onexit, exitsub

msgbox Это сообщение появляется при загрузке скрипта

home:: msgbox Это сообщение появляется при нажатии home

exitsub:
msgbox Это сообщение появляется при выходе
exitapp
return

По второму вопросу не совсем понятно в чем проблема?
В первый скрипт, впишите второй, и второму скрипту присвойте свой хоткей, или просто этот второй скрипт запишите в секцию автовыполнения (в начало скрипта).

3

Re: AHK: Автозаполнение переменных

InFlames пишет:

onexit
или просто этот второй скрипт запишите в секцию автовыполнения (в начало скрипта).

Вот именно это я не знаю как сделать правильно. Есть логическая схема, но в жизнь воплотить не получается. Не хватает знаний.

4

Re: AHK: Автозаполнение переменных

Вот "слепил". Если такой вариант устроит, будем дальше смотреть, что надо редактировать.


CoordMode, Pixel, Screen
FileInstall,  d:\AutoClickerScripts\set.ico, %A_WorkingDir%\set.ico, 1
Menu, Tray, Icon, %A_WorkingDir%\set.ico
onexit, exitsub

Insert::  ; Старт основного скрипта
WinWaitActive, Ragnarok
    Loop
    {
    PixelSearch, Px, Py, 8, 33, 26, 46, 0x000000           ; Сверяем цвет на соответсвие
    If ErrorLevel = 1                      ; Не совпало - скрпт нажимает на Ф4
            Send, {F4}        ; Хочется что бы посылаемая кнопка устонавливалась по желанию    
    else                                          ; Если цвет не изменяется слип и снова проверка цвета на соответствие.
            Sleep, 200
    }
return

Delete::  ; Это вторая часть, сюда вписываете нужный код, для кнопки delete
MouseGetPos, MouseX, MouseY
MsgBox x=%MouseX%, y=%MouseY%
return

Home:: Pause
End:: ExitApp

exitsub:
   ;   Сюда вписываете нужный код, который будет выполняться при выходе 
exitapp
return

5

Re: AHK: Автозаполнение переменных

Так я так понял что нужно обозначить Px и Py, как переменную. А как сделать так что бэ при нажатии к примеру кнопки Делит, эта переменная не высвечивалась сообщением, а автоматически записывалась вот сюда:

Insert::  ; Старт основного скрипта
WinWaitActive, Ragnarok
    Loop
    {
    PixelSearch, Px, Py, 8, 33, 26, 46, 0x000000           ; Сверяем цвет на соответсвие
    If ErrorLevel = 1                      ; Не совпало - скрпт нажимает на Ф4
            Send, {F4}        ; Хочется что бы посылаемая кнопка устонавливалась по желанию    
    else                                          ; Если цвет не изменяется слип и снова проверка цвета на соответствие.
            Sleep, 200
    }
return

И еще. Я немного не понял каким оператором воспользовался что бы удалялся установленый файлик для

FileInstall,  d:\AutoClickerScripts\set.ico, %A_WorkingDir%\set.ico, 1
Menu, Tray, Icon, %A_WorkingDir%\set.ico

Что то примерно такое?:

End:: ExitApp

exitsub:
Delete %A_WorkingDir%\set.ico   ;   Сюда вписываете нужный код, который будет выполняться при выходе 
exitapp
return

6

Re: AHK: Автозаполнение переменных

Такс. Ладно. Поговорил с людьми, чот никто не вкурит что я хочу.
Подумал и решил сделать все по другому.
Как сделать так, что бэ при запуске скрипта, выбивало окошко в которое с начало нужно ввести Px-координату, а потом Py?

7

Re: AHK: Автозаполнение переменных

Кхм. Разобрался с командой OnExit, получилось следующее:

FileInstall,  d:\AutoClickerScripts\set.ico, %A_WorkingDir%\set.ico, 1
Menu, Tray, Icon, %A_WorkingDir%\set.ico
OnExit, ExitSub
WinWaitActive, Ragnarok
CoordMode, Pixel, Screen

    Loop
    {
            PixelSearch, Px, Py, 8, 33, 26, 46, 0x000000
    If ErrorLevel = 1
        {
            Send, {4}            
                    }
    else
        {
            Sleep, 200
        }
    }
return
    ExitSub:
        {
            FileDelete, %A_WorkingDir%\set.ico
            ExitApp
        }
Home:: Pause
End:: ExitApp

Все замечательно работает.
Почитал я немного документацию по АХК и думаю, что в прежнем посте ведется речь скорее всего о GUI, а именно Edit (редактируемое поле ввода). Может быть будет проще добавить в меню в трее еще один элемент Edit, чем отдельно его рисовать? Дайте наводку где копать.
Спасибо!

8

Re: AHK: Автозаполнение переменных

Простите за глупость. Объясните в чем суть скрипта, как он работает и что делает?

9

Re: AHK: Автозаполнение переменных

Концовка топа не соответствует названию темы. А вообще это скрипт ищущий определенный цвет, в заданном окне, по заданым координатам.

10

Re: AHK: Автозаполнение переменных

DaVinchi пишет:

А вообще это скрипт ищущий определенный цвет, в заданном окне, по заданым координатам.

DaVinchi, спасибо, но я всеравно не понял. Для каких целей оно тебе? Я просто то же играю в ро и по этому интересуюсь.