1 (изменено: ascaria, 2017-01-12 14:55:47)

Тема: Проблемы с запуском скрипта при использовании PressCount

Добрый день.
Работа скрипта заключается в том, что если пользователь нажимает на "6", происходит последовательное нажатие клавиш и остановка скрипта. При нажатии на "t" скрипт должен снова включиться и эмулировать нажатия другой последовательности клавиш.
Проблемы начинаются, когда я пытаюсь вновь запустить скрипт через "t" - он не запускается, он работает только через "F10", посему можно предположить, что причина в счетчике нажатий. Либо я ставлю условие запуска не туда, либо сам счетчик написан не совсем верно. Прошу помочь разобраться.

Рабочая версия скрипта без использования PressCount:


#noenv
#IfWinActive, test.ahk — Блокнот

setbatchlines -1
setkeydelay -1

F10::Suspend
F8::Reload
Return

$t::
Suspend, Off
	Send {w 2}{e}{r}
	sleep 150
	Send {Alt Down}{d}{Alt Up}{e 3}
Return

$6::
	Loop {
		if not GetKeyState("6","P")
		Break
		Send {d 2}{e 2}{r}{g 3}
		Sleep 80
	}
Suspend, On
Return

Сам скрипт:


#noenv
#IfWinActive, test2.ahk — Блокнот

F10::Suspend
F8::Reload
Return

setbatchlines -1
setkeydelay -1

$6::
	Send {q 2}{w}{r}{w 3}
	Sleep 150
	Send {d 3}
	Suspend, On
Return

#UseHook, On

t:: Gosub, PressCount

t(1):
	Suspend, Off
	Send {w 2}{e}{r}{e 3}
	Sleep 150
	Send {Alt Down}{d}{Alt Up}
Return

t(2):
	Suspend, Off
	Send {w 2}{q}{r}{e 3}
	Sleep 150
	Send {Alt Down}{d}{Alt Up}
Return

#UseHook, Off

PressCount:
  Pause_=200

  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

2

Re: Проблемы с запуском скрипта при использовании PressCount

Проблема, видимо, в том, что нажатие t у вас в одном месте, а команда Suspend, Off в другом. При том, что в режиме Suspend АНК выполняет только те горячие клавиши, которые имеют непосредственно возле себя команду Suspend. А у вас непосредственно к t привязана только команда Gosub, PressCount.

3

Re: Проблемы с запуском скрипта при использовании PressCount

YMP
Большое спасибо за подсказку, но проблему решила команда Hotkey, $t, MyLabel с дальнейшей записью MyLabel: Suspend, Off перед основным телом скрипта.


#IfWinActive, test2.ahk — Блокнот
#noenv
Hotkey, $t, MyLabel

F10:: Suspend
F8:: Reload

setbatchlines -1
setkeydelay -1

MyLabel:
Suspend, Off

#UseHook, On

t:: Gosub, PressCount

t(1):
	SendInput {w 2}{e}{r}{e 3}
	Sleep 150
	SendInput {Alt Down}{d}{Alt Up}
Return

t(2):
	SendInput {w 2}{q}{r}{e 3}
	Sleep 150
	Send {Alt Down}{d}{Alt Up}
Return

#UseHook, Off

PressCount:
  Pause_=200

  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

$6::
	Send {q 2}{w}{r}{w 3}
	Sleep 150
	Send {d 3}
	Suspend, On
Return

4

Re: Проблемы с запуском скрипта при использовании PressCount

Так это оно и есть, просто вы окольным путём пошли. Можно было просто добавить Suspend к определению хоткея.


t::
    Suspend, Off
    Gosub, PressCount
    Return

5

Re: Проблемы с запуском скрипта при использовании PressCount

YMP
Ещё раз большое спасибо