1 (изменено: serzh82saratov, 2012-05-11 13:41:20)

Тема: AHK: При запуске скрипта, выполнять отличное от предыдущего действие

Доброго дня, я написал скрипт, но хочется что-то более удобоваримое, чтоб не вводить два адреса, и не быть привязанным к расположению самого скрипта.
Хочу посоветоватся со старшими товарищами, у кого какие идеи?

#NoTrayIcon
#SingleInstance force
FileSetAttrib, ^O, D:\AutoIt\PowerSwitch\ЛАМПА.ahk ; меняет атрибут оффлайн,
 ; файла самого скрипта на противоположный то есть здесь указываем путь к самому
 ; скрипту на компе
FileGetAttrib, Attributes , D:\AutoIt\PowerSwitch\ЛАМПА.ahk
 ; читает атрибут самого себя, указываем путь к самому скрипту также как выше
IfInString, Attributes, AO , если аттрибут соответствует выполняет первое,
 ; если нет второе.
{
Run, D:\AVR-ports.exe -15
 ExitApp
 }
 else
 {
Run, D:\AVR-ports.exe 15
 ExitApp
}
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

2

Re: AHK: При запуске скрипта, выполнять отличное от предыдущего действие

A_ScriptFullPath

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

3

Re: AHK: При запуске скрипта, выполнять отличное от предыдущего действие

teadrinker пишет:

A_ScriptFullPath

Спасибо за ответ!
Я что-то не нашёл подробного описания на русском, не могли бы вы привести пример для особо "одарённых".

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

4 (изменено: serzh82saratov, 2012-05-11 14:24:43)

Re: AHK: При запуске скрипта, выполнять отличное от предыдущего действие

попробовал так выполняет только второе действие

#SingleInstance force
FileSetAttrib, ^O, A_ScriptFullPath
FileGetAttrib, Attributes , A_ScriptFullPath
IfInString, Attributes, AO
{
Run, D:\AutoIt\PowerSwitch\AVR-ports.exe -15
        ExitApp
        }
        else
        {
Run, D:\AutoIt\PowerSwitch\AVR-ports.exe 15
    ExitApp
    }
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

5

Re: AHK: При запуске скрипта, выполнять отличное от предыдущего действие

А всё понял

#SingleInstance force
FileSetAttrib, ^O, %A_ScriptFullPath%
FileGetAttrib, Attributes , %A_ScriptFullPath%
IfInString, Attributes, AO
{
Run, D:\AutoIt\PowerSwitch\AVR-ports.exe -15
ExitApp
}
else
{
Run, D:\AutoIt\PowerSwitch\AVR-ports.exe 15
ExitApp
}

так надо. А нет идеи как сделать, не связанное с аттрибутами, и чтоб вариантов было больше 2, сначала 1 потом 2  потом 3.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

6 (изменено: Irbis, 2012-05-11 14:43:59)

Re: AHK: При запуске скрипта, выполнять отличное от предыдущего действие

Для двух действий:

#SingleInstance force
FileRead, mfile, %A_ScriptFullPath%
a := -0xF, b := -a
if InStr(mfile, a)
   a := -a, b := -b
StringReplace, mfile, mfile, %b%, %a%
FileDelete, %A_ScriptFullPath%
FileAppend, %mfile%, %A_ScriptFullPath%
Run, D:\AVR-ports.exe -15

7

Re: AHK: При запуске скрипта, выполнять отличное от предыдущего действие

serzh82saratov пишет:

А нет идеи как сделать, не связанное с аттрибутами, и чтоб вариантов было больше 2, сначала 1 потом 2  потом 3.

Непонятно, что конкретно требуется.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

8 (изменено: serzh82saratov, 2012-05-11 14:51:09)

Re: AHK: При запуске скрипта, выполнять отличное от предыдущего действие

teadrinker пишет:

Непонятно, что конкретно требуется.:

Запустил скрипт, выполнилось 1, скрипт закрылся. Запустил ещё раз выполнилось 2, скрипт закрылся. Запустил ещё раз выполнилось 3, скрипт закрылся. Запустил ещё раз выполнилось 1, скрипт закрылся. и далее по кругу.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

9

Re: AHK: При запуске скрипта, выполнять отличное от предыдущего действие

Irbis пишет:

Для двух действий:

А что именно в нём происходит вкратце, и куда вставить второе действие?

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

10

Re: AHK: При запуске скрипта, выполнять отличное от предыдущего действие

Никуда вставлять второе действие не надо, скрипт модифицирует сам себя. То есть запустил один раз - параметр будет "15", во второй раз "-15" и т.д.

11

Re: AHK: При запуске скрипта, выполнять отличное от предыдущего действие

как сделать, не связанное с аттрибутами, и чтоб вариантов было больше 2, сначала 1 потом 2  потом 3.

Помимо атрибутов «факт предшествующего выполнения» можно сохранить в тело скрипта, в отдельный файл, в реестр, возможно ориентироваться по факту наличия в системе изменений вносимых отдельными «подпрограммами» скрипта.

12 (изменено: serzh82saratov, 2012-05-11 15:21:06)

Re: AHK: При запуске скрипта, выполнять отличное от предыдущего действие

Irbis пишет:

Никуда вставлять второе действие не надо, скрипт модифицирует сам себя. То есть запустил один раз - параметр будет "15", во второй раз "-15" и т.д.

Интересное решение, Спасибо. А что если мне понадобится вторым действием назначить что-то другое например; MsgBox Вы нажали, как мне это реализовать?

creature.ws пишет:

Помимо атрибутов «факт предшествующего выполнения» можно сохранить в тело скрипта

А можно пример для 3 действий?

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

13

Re: AHK: При запуске скрипта, выполнять отличное от предыдущего действие

Обычно данные, которые нужно сохранить от одного выполнения программы до другого, записываются в ini-файл.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

14 (изменено: serzh82saratov, 2012-05-11 15:52:36)

Re: AHK: При запуске скрипта, выполнять отличное от предыдущего действие

teadrinker пишет:

Обычно данные, которые нужно сохранить от одного выполнения программы до другого, записываются в ini-файл.

А можно-ли это как-то записывать в сам скрипт? И из него-же читать

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

15 (изменено: Irbis, 2012-05-11 16:11:24)

Re: AHK: При запуске скрипта, выполнять отличное от предыдущего действие

teadrinker пишет:

Обычно данные, которые нужно сохранить от одного выполнения программы до другого, записываются в ini-файл.

Это-то понятно, но раз человеку понадобилось хранить состояния скрипта в атрибутах файла... (тут не помешает смайл :facepalm:, но его нет)
Хотя я погорячился, пожалуй - ситуации разные бывают.

FileRead, mfile, %A_ScriptFullPath%
a = 000
b = %a%
a++
Gosub pp_%a%
StringReplace, mfile, mfile, %b%, 00%a%
FileDelete, %A_ScriptFullPath%
FileAppend, %mfile%, %A_ScriptFullPath%
return

pp_1:
MsgBox %A_ThisLabel%
; Run, D:\AVR-ports.exe -15
return
pp_2:
MsgBox %A_ThisLabel%
; Run, D:\AVR-ports.exe 15
return
pp_3:
MsgBox %A_ThisLabel%
; 3ий вариант
return
pp_4:
MsgBox %A_ThisLabel%
; 4ый вариант - последний. Дальше по аналогии
a = 0
return

OFF: Убил почти час(!!!), пытаясь понять, почему 3ий вариант упорно запускается 2 раза, хоть что делай. А если переставить местами в его подпрограмме строку
         с MsgBox и с комментом, то этот вариант вообще пропускается... Оказалось - скрипт в ANSI сохранен. Так что я сам тот еще :facepalm:

16 (изменено: serzh82saratov, 2012-05-11 16:09:27)

Re: AHK: При запуске скрипта, выполнять отличное от предыдущего действие

Irbis пишет:

Это-то понятно, но раз человеку понадобилось хранить состояния скрипта в атрибутах файла... (тут не помешает смайл :facepalm:, но его нет)
Хотя я погорячился, пожалуй - ситуации разные бывают.

ГЕНИАЛЬНО!!! Так можно сколько угодно действий добавлять! РЕСПЕКТ

Вопрос закрыт.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

17

Re: AHK: При запуске скрипта, выполнять отличное от предыдущего действие

http://mobka.info/sys/images/smile/facepalm.gif

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

18 (изменено: Irbis, 2012-05-11 16:24:33)

Re: AHK: При запуске скрипта, выполнять отличное от предыдущего действие

Я имел в виду, встроенными средствами, из стандартного набора. Тогда уж классика:

http://fotki.ykt.ru/albums/userpics/24810/1317350717_facepalm_3.jpg

19

Re: AHK: При запуске скрипта, выполнять отличное от предыдущего действие

Irbis
Ещё раз спасибо за помощь, указал вас как автора скрипта здесь http://the-bestseller.livejournal.com/

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

20

Re: AHK: При запуске скрипта, выполнять отличное от предыдущего действие

Спасибо, я польщен.

21

Re: AHK: При запуске скрипта, выполнять отличное от предыдущего действие

Irbis пишет:

Спасибо, я польщен.

Вам спасибо

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

22 (изменено: serzh82saratov, 2012-12-03 18:22:47)

Re: AHK: При запуске скрипта, выполнять отличное от предыдущего действие

serzh82saratov пишет:
teadrinker пишет:

Обычно данные, которые нужно сохранить от одного выполнения программы до другого, записываются в ini-файл.

А можно-ли это как-то записывать в сам скрипт? И из него-же читать

Вариант с созданием файла скрипта нестабильно работает (файл удаляется но не создаётся) при очень частом запуске скрипта.
Дошло решение, а что если скрипт использовать как ини-файл...


#SingleInstance force
/*
[Section]
Label=0
*/ 
IniRead, Label, %A_ScriptFullPath%, Section, Label
If Label = 3
Label = 0
Label++
IniWrite, %Label%, %A_ScriptFullPath%, Section, Label
GoTo Label_%Label%

Label_1:
MsgBox Label_1
ExitApp
Label_2:
MsgBox Label_2
ExitApp
Label_3:
MsgBox Label_3
ExitApp

...так-что можно и вообще обойтись без ини файлов, в случаях с некомпилированными скриптами.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

23

Re: AHK: При запуске скрипта, выполнять отличное от предыдущего действие

serzh82saratov пишет:

Вариант с созданием файла скрипта нестабильно работает (файл удаляется но не создаётся) при очень частом запуске скрипта.

Ini-файл удалять не нужно, просто записывать новые данные "поверх" старых.

serzh82saratov пишет:

Дошло решение, а что если скрипт использовать как ини-файл...

Не вижу в этом смысла.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

24 (изменено: serzh82saratov, 2012-12-03 19:29:11)

Re: AHK: При запуске скрипта, выполнять отличное от предыдущего действие

teadrinker пишет:
serzh82saratov пишет:

Вариант с созданием файла скрипта нестабильно работает (файл удаляется но не создаётся) при очень частом запуске скрипта.

Ini-файл удалять не нужно, просто записывать новые данные "поверх" старых.

Это-то понятно..
Я про пост № 15

serzh82saratov пишет:

Дошло решение, а что если скрипт использовать как ини-файл...

Не вижу в этом смысла.

Было желание в этом скрипте http://xbmc.ru/forum/showpost.php?p=332 … ostcount=1 сохранять все настройки в одном файле, т.к. текстовое содержимое файла (скрипта) является плодом работы другого скрипта... вообщем долго объяснять.
Особой потребности конечно нет, но для удобства сохранения и восстановления всех настроек из одного файла - очень даже.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui