1 (изменено: Indomito, 2015-07-11 18:55:46)

Тема: AHK: Динамические метки или их аналог

Приветствую.

Такой вопрос поднимался или уже мне кажется.
Мне в команде Hotkey нужны оные, т.е. не вида %MyLabel%, а именно метки к которым я могу получить доступ не описывая их.

+ Вот небольшой пример

;------------------------- Подпрограмма счётчика нажатий
;----- Пример для левой кнопки мыши ----
#UseHook, On

LButton:: Gosub, PressCount

LButton(1):                        ; Одиночный действует как и раньше (почти,
  Click Down Left                 ; т.к. пауза иногда даёт о себе знать при 
  KeyWait, LButton                 ; перетаскивании правой кнопкой).
  Click Up Left
Return

LButton(2):
  ToolTip, Двойной правый щелчок.
  Sleep, 1000
  ToolTip
Return

#UseHook, Off
;-----------------------------------------


PressCount:
  Pause_= 300     ; Если пауза меньше этого количества миллисекунд, то нажатие
                 ; двойное. Если больше, то оно расценивается как 2 одиночных.
  If not Second
  {
    Second=1
    SetTimer, DoublePress, -%Pause_%
  }
  Else
  {
    Second=0
    SetTimer, %A_ThisHotkey%(2), -1
  }
Return

DoublePress:
  If not Second
    Return
  Second=0
  SetTimer, %A_ThisHotkey%(1), -1
Return

Но тут метки явно заданы, что мне не подходит.



Вторая версия это метка, ну скажем, одна, но идёт проверка на то что какой Hotkey сработал.
Что надёжнее использовать  A_ThisHotkey  или есть варианты иные, может свойства самого Hotkey или встроенная функция?

"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
Для NotePad++(подсветка синтаксиса, автозавершение и плагины(AutoSave и RunMe).
OS Windows 10 x64 Pro

2 (изменено: YMP, 2015-07-11 19:55:07)

Re: AHK: Динамические метки или их аналог

1. Ничего не понятно.
2. Если пример не подходит, то зачем он?

3

Re: AHK: Динамические метки или их аналог

1. Нужно как то по одной метке переходить по разным действиям от того какая клавиша была нажата.
2. Думал что как то поможет,  видимо - нет.

"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
Для NotePad++(подсветка синтаксиса, автозавершение и плагины(AutoSave и RunMe).
OS Windows 10 x64 Pro

4

Re: AHK: Динамические метки или их аналог

Ну да, можно A_ThisHotkey проверять.

5

Re: AHK: Динамические метки или их аналог

Значит, проверка по  A_ThisHotkey с учётом A_TimeSinceThisHotkey и A_TimeSincePriorHotkey?

А проверку, заключить в

Thread, NoTimers
Critical

;Проверка (код)

Critical , Off
Thread, NoTimers, false

Так, приблизительно? Не перебор?

"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
Для NotePad++(подсветка синтаксиса, автозавершение и плагины(AutoSave и RunMe).
OS Windows 10 x64 Pro

6

Re: AHK: Динамические метки или их аналог

А зачем время проверять?

7

Re: AHK: Динамические метки или их аналог

Понимаешь...

Меня попросили помочь скрипт, но возникли проблемки.
Обращение происходит, не только по Hotkey, но и по таймеру.

Вот я и пытаюсь всё связать воедино.

"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
Для NotePad++(подсветка синтаксиса, автозавершение и плагины(AutoSave и RunMe).
OS Windows 10 x64 Pro

8

Re: AHK: Динамические метки или их аналог

Если A_ThisHotkey пусто, значит вызвано таймером. При установке таймера назначать переменную. A_ThisHotkey пусто, значим проверяем эту переменную.

помочь скрипт

А, что это выражение значит?

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

9

Re: AHK: Динамические метки или их аналог

Забыл слово "написать".
Должно было так выглядеть - "Меня попросили помочь скрипт написать, но возникли проблемки."
А за идею - спасибо.

"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
Для NotePad++(подсветка синтаксиса, автозавершение и плагины(AutoSave и RunMe).
OS Windows 10 x64 Pro

10

Re: AHK: Динамические метки или их аналог

Более логичным будет одной процедуре присвоить 2 метки, для таймера и хоткея.

SetTimer, label1, 3000
F1:: Gosub label2
Return

Label1:
Label2:
   MsgBox % A_ThisLabel="Label1" ? "Таймер" : "Хоткей"
Return

11

Re: AHK: Динамические метки или их аналог

Да, точно. А ведь недавно сам это применял, но без таймера и хоткея, что поделать - иннерционно\ассоциативное мышление.

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

12

Re: AHK: Динамические метки или их аналог

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

"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
Для NotePad++(подсветка синтаксиса, автозавершение и плагины(AutoSave и RunMe).
OS Windows 10 x64 Pro