1 (изменено: bychkov1609, 2013-02-14 20:18:18)

Тема: AHK:Скрипт на 2 действие при повторном нажатии уже забинденой клавиши

Уважаемые форумчане, написал скрипт с необходимым содержанием:

home:: 
send, {WheelDown}
sleep, 1
send, {ENTER}
sleep, 1200
send, {WheelDown}
sleep, 100
send, {WheelDown}
sleep, 100
send, {WheelDown}
sleep, 100
send, {WheelDown}
sleep, 100
send, {ENTER}
sleep, 100

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

2 (изменено: serzh82saratov, 2013-02-14 20:59:09)

Re: AHK:Скрипт на 2 действие при повторном нажатии уже забинденой клавиши


home:: 
if !a
{ a = 1
MsgBox 1 последовательность
return 
} a =
MsgBox 2 последовательность
return
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

3

Re: AHK:Скрипт на 2 действие при повторном нажатии уже забинденой клавиши

Спасибо большое!

4

Re: AHK:Скрипт на 2 действие при повторном нажатии уже забинденой клавиши

Пожалуйста.
Немного упростил код.

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

5

Re: AHK:Скрипт на 2 действие при повторном нажатии уже забинденой клавиши

Home::
   If a:=!a
   {
      MsgBox, 262144, % A_LineNumber, % "some code", % .5
      ; ...
   }
   Else
   {
      MsgBox, 262144, % A_LineNumber, % "some other code", % .5
      ; ...
   }
;    KeyWait, % A_ThisHotkey
   Return

6 (изменено: serzh82saratov, 2013-02-14 21:31:36)

Re: AHK:Скрипт на 2 действие при повторном нажатии уже забинденой клавиши

А на 3 как лучше?


home::
if !a
{ a = 1
tooltip 1 последовательность
return 
} if a = 1
{ a = 2
tooltip 2 последовательность
return  
} else a =
tooltip 3 последовательность
return
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

7

Re: AHK:Скрипт на 2 действие при повторном нажатии уже забинденой клавиши

Как вариант:

Home::
   If !a
   {
      a:=1
      MsgBox, 262144, % A_LineNumber, % "some code", % .5
      ; ...
   }
   Else If a=1
   {
      a:=2
      MsgBox, 262144, % A_LineNumber, % "some other code 2", % .5
      ; ...
   }
   Else
   {
      a:=""
      MsgBox, 262144, % A_LineNumber, % "some other code 3", % .5
      ; ...
   }
;    KeyWait, % A_ThisHotkey
   Return

Не забываем об отступах, ибо читать не удобно.

8 (изменено: Irbis, 2013-02-14 23:43:55)

Re: AHK:Скрипт на 2 действие при повторном нажатии уже забинденой клавиши

Как вариант-2
Количество различных действий определяет выражение a = 3, и соответственно такое же кол-во процедур HomeN должно присутствовать.

Home:: Gosub % "Home" a := (!a || a = 3) ? 1 : a+1

Home1:
   MsgBox, 262144, % A_LineNumber, % "some code", % .5
      ; ...
Return
Home2:
      MsgBox, 262144, % A_LineNumber, % "some other code 2", % .5
      ; ...
Return
Home3:
      MsgBox, 262144, % A_LineNumber, % "some other code 3", % .5
      ; ...
Return

9

Re: AHK:Скрипт на 2 действие при повторном нажатии уже забинденой клавиши

Irbis ещё удобно тем что если надо выполнять только по факту нажатия

KeyWait, % A_ThisHotkey

то не нужно вписывать в каждую метку:

Home::
   a := (!a || a = 3) ? 1 : a+1
   Gosub Home%a%
   KeyWait, % A_ThisHotkey
Return
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui