1 (изменено: bubaaa, 2016-01-18 18:07:10)

Тема: Увеличение Sleep после нажатия клавиши

Добрый день.
В данный скрипт осуществляет поиск картинки в директории, и в зависимости от найденной картинки - нажимает цифру от 1 до 4.
Если нажать кнопка "e" скрипт засыпает на 1 секунду.
Если зажать "e" то засыпает пока не отожмешь "e"

Однако если часто нажимать "e", цифры все равно проскакивают между нажатиями - как на скриншоте.

Вопрос:

Можно ли это реализовать? - каждый раз при нажатии кнопки "e" сбрасывать значение sleep в 0 и начинать sleep заново?
Или возможно есть другой метод исключить, цифры между нажатиями?





SetWorkingDir %A_ScriptDir%

;IfNotExist, 1.png
    ;MsgBox Error: Your file either doesn't exist or isn't in this location.

p1 := [0, 0, 1366, 768, "1.png", 1]
p2 := [0, 0, 1366, 768, "2.png", 2]
p3 := [0, 0, 1366, 768, "3.png", 3]
p4 := [0, 0, 1366, 768, "4.png", 4]


loop
{
   loop 4
   {
	  ImageSearch, Px, Py, p%A_Index%[1], p%A_Index%[2], p%A_Index%[3], p%A_Index%[4], % p%A_Index%[5]
      if errorlevel && (GetKeystate("e") = 1)
   {
         sleep 1000
         break
   } 
      else if !errorlevel && (GetKeystate("e") = 0)
   {
         send % p%A_Index%[6]
         break
   }
   }
}
Return

Спасибо.

Post's attachments

Error.PNG 130.58 kb, 16 downloads since 2016-01-18 

You don't have the permssions to download the attachments of this post.

2

Re: Увеличение Sleep после нажатия клавиши

вообще нет идей, или наводок каких нибудь? куда копать?

3

Re: Увеличение Sleep после нажатия клавиши

GetKeystate("e") неправильно указан. GetKeystate("vk45","p") правильно. vk45 это клавиша e\у, а p значит что должна проводится проверка на нажатость(есть еще T, проверяет статус например у caps lock).

vk это виртуальный код клавиши, его можно узнать тут Virtual-Key Codes.

4 (изменено: bubaaa, 2016-01-19 14:33:32)

Re: Увеличение Sleep после нажатия клавиши

yalanne
Так тоже проверял, все не дало результатов все равно, между нажатиями проскакивает цифра

5 (изменено: Alectric, 2016-01-19 21:56:00)

Re: Увеличение Sleep после нажатия клавиши

SetWorkingDir %A_ScriptDir%

;IfNotExist, 1.png
    ;MsgBox Error: Your file either doesn't exist or isn't in this location.

p1 := [0, 0, 1366, 768, "1.png", 1]
p2 := [0, 0, 1366, 768, "2.png", 2]
p3 := [0, 0, 1366, 768, "3.png", 3]
p4 := [0, 0, 1366, 768, "4.png", 4]


loop
{
  sleep,10
  t++
  if t>0
  loop 4
  {
    ImageSearch, Px, Py, p%A_Index%[1], p%A_Index%[2], p%A_Index%[3], p%A_Index%[4], % p%A_Index%[5]
;    tooltip,% a_tickcount
    if t<1
      break
    if !errorlevel
    {
      send % p%A_Index%[6]
      break
    }
  }
}
Return


~vk45::
t=-100
return
Win 10 x64
AHK v1.1.33.02
                       Справка тебе в помощь.

6 (изменено: bubaaa, 2016-01-19 22:25:31)

Re: Увеличение Sleep после нажатия клавиши

Alectric пишет:
SetWorkingDir %A_ScriptDir%

;IfNotExist, 1.png
    ;MsgBox Error: Your file either doesn't exist or isn't in this location.

p1 := [0, 0, 1366, 768, "1.png", 1]
p2 := [0, 0, 1366, 768, "2.png", 2]
p3 := [0, 0, 1366, 768, "3.png", 3]
p4 := [0, 0, 1366, 768, "4.png", 4]


loop
{
  sleep,10
  t++
  if t>0
  loop 4
  {
    ImageSearch, Px, Py, p%A_Index%[1], p%A_Index%[2], p%A_Index%[3], p%A_Index%[4], % p%A_Index%[5]
;    tooltip,% a_tickcount
    if t<1
      break
    if !errorlevel
    {
      send % p%A_Index%[6]
      break
    }
  }
}
Return


~vk45::
t=-100
return

К сожалению не работает, перезапускает 1 loop и все.

Вот к чему пришел - но скрипт останавливается при нажатии любой кнопки, а вот как добавить исключения к WASD не могу понять.
при нажатых кнопках W или A  или S или D скрипт продолжал работать.

 SetWorkingDir %A_ScriptDir%
#InstallKeybdHook

;IfNotExist, 1.png
    ;MsgBox Error: Your file either doesn't exist or isn't in this location.

p1 := [0, 0, A_ScreenWidth, A_ScreenHeight, "1.png", 1]
p2 := [0, 0, A_ScreenWidth, A_ScreenHeight, "2.png", 2]
p3 := [0, 0, A_ScreenWidth, A_ScreenHeight, "3.png", 3]
p4 := [0, 0, A_ScreenWidth, A_ScreenHeight, "4.png", 4]


SetTimer, CheckActivity, 50
Exit

CheckActivity:
  loop
   {
      if(A_TimeIdlePhysical < 200)
         {
            sleep 1000
         }
      else
         {
            loop 4
               {
                  ImageSearch, Px, Py, p%A_Index%[1], p%A_Index%[2], p%A_Index%[3], p%A_Index%[4], % p%A_Index%[5]
                  if !errorlevel
                     {
                        send % p%A_Index%[6]
                        break
                     }
               }
         }
  }
return 

7

Re: Увеличение Sleep после нажатия клавиши

Разорбался получилось что то в роде этого.



SetWorkingDir %A_ScriptDir%
#InstallKeybdHook

;IfNotExist, 1.png
    ;MsgBox Error: Your file either doesn't exist or isn't in this location.

p1 := [0, 0, A_ScreenWidth, A_ScreenHeight, "1.png", 1]
p2 := [0, 0, A_ScreenWidth, A_ScreenHeight, "2.png", 2]
p3 := [0, 0, A_ScreenWidth, A_ScreenHeight, "3.png", 3]
p4 := [0, 0, A_ScreenWidth, A_ScreenHeight, "4.png", 4]


SetTimer, CheckActivity, 50
Exit

CheckActivity:
  loop
   {
      if(A_TimeIdlePhysical < 200) and !(GetKeyState("w", "p")) and !(GetKeyState("a", "p")) and !(GetKeyState("s", "p")) and !(GetKeyState("d", "p"))
         {
            sleep 1000
         }
      else
         {
            loop 4
               {
                  ImageSearch, Px, Py, p%A_Index%[1], p%A_Index%[2], p%A_Index%[3], p%A_Index%[4], % p%A_Index%[5]
                  if !errorlevel
                     {
                        send % p%A_Index%[6]
                        break
                     }
               }
         }
  }
return