2013-03-31 4 views
0

Я на версию AHL_L 32Bit 1.1.05.06AutoHotkey обнаруживая PixelColor для дольше х секунд

Я ищу логический способ обнаружить на AutoHotkey, если пиксель за й количество времени, после того, как 15 секунд, я предполагаю, что он разбился, и мы собираемся обновиться.

Мой текущий код выглядит так:

CrashCheck: 
if stuckinbonus = 0x1D001A 
{ 

    if(FoundCrash = 0) { 
    FirstFound := A_Tickcount 
    FoundCrash = 1 
     } else { 
CrashCheckTime := A_Tickcount - FirstFound 
    } 




if(CrashCheckTime >= 15000){ 
SetTimer,CrashCheck,off 
MsgBox,Refreshing page (Pseudo Code) 
} 
} 
return 

Я попытался положить переменные как глобальные, как это в начале сценария, но я бегу в проблемы с CrashCheckTime просто быть 0:/Есть идеи?

Global FoundCrash := "" 
Global FirstFound := "0" 
Global CrashCheckTime:= "" 

ответ

0

Это сделало бы эту работу?

#SingleInstance Force 
#installKeybdHook 
#Persistent 
SetTimer, CrashCheck, 1000 ; run CrashCheck every second 
MyAlert := 0 
Return 

CrashCheck: 
PixelGetColor, Color, 100, 100 
If (Color = 0x1D001A) 
{ 
    MyAlert++ 
} 
Else 
{ 
    MyAlert := 0 
} 
If (MyAlert > 15) 
{ 
    MyAlert := 0 
    Refresh Page 
} 
Return 

Что касается вашего собственного кода. Может быть, вы не устанавливаете FoundCrash := 0 перед запуском CrashCheck? Таким образом, вы НИКОГДА не вернетесь для If (FoundCrash = 0) и таким образом ВСЕГДА переходите к выбору Else.

Пример:

#SingleInstance Force 
#installKeybdHook 
#Persistent 
;FoundCrash := 0 ; Script fails when this line is commented out! 
stuckinbonus = 0x1D001A 

!t:: ; [Alt]+t to simulate CrashCheck 
If (stuckinbonus = 0x1D001A) 
{ 
    If (FoundCrash = 0) 
    { 
     SoundBeep, 500, 500 ;(Low beep) 
       FirstFound := A_Tickcount 
     FoundCrash := 1 
    } 
    Else 
    { 
     SoundBeep, 1500, 500 ;(High beep) 
     CrashCheckTime := A_Tickcount - FirstFound 
    } 
    If (CrashCheckTime >= 15000) 
    { 
    ;SetTimer,CrashCheck,off 
    FoundCrash := 0 
    MsgBox,Refreshing page (Pseudo Code) 
    } 
} 
Return 

Я предлагаю вам запустить это в режиме отладки внутри SciTE4AutoHotKey, чтобы увидеть, какие отрасли будут приняты и какие значения переменных во время пошагового исполнения.

+0

могли бы вы предоставить некоторую обратную связь? Я знаю, что мое решение отличается от вашего. Или вы только хотели знать, почему некоторые переменные остались пустыми? –

0

я написал небольшую функцию, которая закругляется, ждет, и держит цикла до тех пор, пока не увидит желаемый цвет пикселя в нужных координатах. Может быть, это полезно?

;This function checks the Pixel at the provided coordinates and waits until the colour matches the provided parameter 
WaitForLoad(PixelColorX,PixelColorY,PixelColorValue) 
{ 
CycleCount = 0 
    PixelGetColor SearchPixel, PixelColorX, PixelColorY 
    ;msgbox "Found Pixel %SearchPixel% at %PixelColorX%, %PixelColorY%, Looking for %PixelColorValue%" ;DEBUGG ASSISTANT 
    While (SearchPixel != PixelColorValue) 
      { 
    CycleCount = CycleCount + 1 
    sleep 100 
    ; Tooltip Waiting to detect pixels HERE!, PixelColorX, PixelColorY  ; Doesn't work 
    PixelGetColor SearchPixel, PixelColorX, PixelColorY 
    } 
    sleep 500 
;Debug 
;msgbox Exiting Function with %PixelColorValue% at %PixelColorX%, %PixelColorY% after %CycleCount% Cycles. 
SearchPixel = 0 
PixelColorValue = 1 
Смежные вопросы