1 (изменено: Laert, 2012-03-09 15:55:19)

Тема: AHK: Остановить исполнение горячей клавиши нажатием другой

Допустим, исполняется цикл типа:

^q::
while условие1
  {
  ...
  }
...
while условие2
  {
  ...
  }
...
loop
  {
  ...
  }
Return

Вопрос: как можно остановить исполнение подпрограммы ^q в любом месте нажатием другой горячей клавиши (допустим, Break)?

2 (изменено: Laert, 2012-03-09 15:56:08)

Re: AHK: Остановить исполнение горячей клавиши нажатием другой

Еще оговорюсь, что команда Pause здесь не подходит, так как цель - именно завершение подпрограммы, подобно команде Return внутри любого из циклов.

3

Re: AHK: Остановить исполнение горячей клавиши нажатием другой

^vk51:: ; q
   While A_Index<10
   {
      TrayTip,, % "Press Break/Pause (wait: "10-A_Index ")"
      Sleep, DllCall("GetAsyncKeyState", "Int", 0x13, "UShort")
           ? -1:1000
      If DllCall("GetAsyncKeyState", "Int", 0x13, "UShort")
         Break
   }
   MsgBox, 262208, % " ", first loop is broken, 1
   Loop
   {
      TrayTip,, % "Press Break/Pause ("A_Index ")"
      Sleep, DllCall("GetAsyncKeyState", "Int", 0x13, "UShort")
           ? -1:1000
      If DllCall("GetAsyncKeyState", "Int", 0x13, "UShort")
         Break
   }
   MsgBox, 262208, % " ", second loop is broken, 1
   Return