1 (изменено: freeker0k, 2013-12-18 18:06:59)

Тема: AHK: Оптимизация работы скрипта.

Есть скрипт, который выполняет проверку 2х пикселей на наличие белого цвета. Если 1й пиксель остается белым  как минимум ~0,3 секунды, идет проверка 2го пикселя на наличие белого цвета, отсылается клавиша VK49.

Мое решение:


Loop
{
Sleep, 80
PixelSearch, Px, Py, 19, 4, 19, 4, 0xFFFFFF, Fast     
If ErrorLevel
    Send, {???}  
Else
    {
    Sleep, 80
    PixelSearch, Px, Py, 19, 4, 19, 4, 0xFFFFFF, Fast     
    If ErrorLevel
        Send, {???}
    Else
        {
        Sleep, 80
        PixelSearch, Px, Py, 19, 4, 19, 4, 0xFFFFFF, Fast     
        If ErrorLevel
            Send, {???}  
        Else
            {
            Sleep, 80
            PixelSearch, Px, Py, 22, 4, 22, 4, 0xFFFFFF, Fast    
            If ErrorLevel
                Send, {???}  
            Else Send, {VK49}  
            }
        }
    }
}

Проблемы:

Во время работы скрипта практически блокируются модификаторы клавиш (Ctrl+...; Alt+Tab). Если сочетание и можно нажать, то только очень резко и быстро.

Также приложение (игра) "вылетает", при использовании данного скрипта.

Как оптимизировать данный скрипт, чтоб он хотя бы выполнял цикл с задержкой 0,05-0,08 секунды. А также грешу на уйму If errorLevel, скрипт что-то пытается "сделать", если пиксели вообще не белые.



Спасибо

п. с. особенно ypppu в оформлении %)

2

Re: AHK: Оптимизация работы скрипта.

freeker0k, для начала приведите Ваш код в удобочитаемый вид с помощью отступов, чтобы было понятно, где заканчивается один логический блок и начинается другой, и какая скобка к чему относится.
Для примера:

if (msg = WM_NCMOUSEMOVE)
{
    if (wp = HTCLOSE)
    {
        if !HWINEVENTHOOK
            ToolTipShow("Подсказка для кнопки Close", 1)
    }
    else if HWINEVENTHOOK
    {
        ToolTipDestroy(1)
        Gui, Destroy
    }
}
else if (HWINEVENTHOOK && msg = WM_NCMOUSELEAVE)
{
    ToolTipDestroy(1)
    ExitApp
}
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

3

Re: AHK: Оптимизация работы скрипта.

Подправил и у брал пару одинаковых секций, принцип работы тот же:


LOOP

{
sleep, 80
PixelSearch, Px, Py, 19, 4, 19, 4, 0xFFFFFF, Fast     

if ErrorLevel

    
  {
Send, {???}  
  }
Else
      {
      sleep, 80
      PixelSearch, Px, Py, 19, 4, 19, 4, 0xFFFFFF, Fast     

      if ErrorLevel

          
        {
      Send, {???}  
        }
      Else
            {
            sleep, 80
            PixelSearch, Px, Py, 19, 4, 19, 4, 0xFFFFFF, Fast     

            if ErrorLevel

                
              {
            Send, {???}  
              }
            Else
                  {
                  sleep, 80
                  PixelSearch, Px, Py, 22, 4, 22, 4, 0xFFFFFF, Fast    

                  if ErrorLevel

                      
                    {
                  Send, {???}  
                    }
                  Else
                    {
                  send, {VK49}  
                    }
                  }
            }
      }
}

4

Re: AHK: Оптимизация работы скрипта.

Надо вот так:


Loop
{
Sleep, 80
PixelSearch, Px, Py, 19, 4, 19, 4, 0xFFFFFF, Fast     
If ErrorLevel
    Send, {???}  
Else
    {
    Sleep, 80
    PixelSearch, Px, Py, 19, 4, 19, 4, 0xFFFFFF, Fast     
    If ErrorLevel
        Send, {???}
    Else
        {
        Sleep, 80
        PixelSearch, Px, Py, 19, 4, 19, 4, 0xFFFFFF, Fast     
        If ErrorLevel
            Send, {???}  
        Else
            {
            Sleep, 80
            PixelSearch, Px, Py, 22, 4, 22, 4, 0xFFFFFF, Fast    
            If ErrorLevel
                Send, {???}  
            Else Send, {VK49}  
            }
        }
    }
}

И желательно около VK и SC-кодов подписывать через точку с запятой комментарий, что это за клавиша. Не все же их знают наизусть.

5

Re: AHK: Оптимизация работы скрипта.

ypppu пишет:

Надо вот так:


Loop
{
Sleep, 80
PixelSearch, Px, Py, 19, 4, 19, 4, 0xFFFFFF, Fast     
If ErrorLevel
    Send, {???}  
Else
    {
    Sleep, 80
    PixelSearch, Px, Py, 19, 4, 19, 4, 0xFFFFFF, Fast     
    If ErrorLevel
        Send, {???}
        Else
        {
        Sleep, 80
        PixelSearch, Px, Py, 19, 4, 19, 4, 0xFFFFFF, Fast     
        If ErrorLevel
            Send, {???}  
        Else
            {
            Sleep, 80
            PixelSearch, Px, Py, 22, 4, 22, 4, 0xFFFFFF, Fast    
            If ErrorLevel
                Send, {???}  
            Else Send, {VK49}  
            }
        }
    }
}

И желательно около VK и SC-кодов подписывать через точку с запятой комментарий, что это за клавиша. Не все же их знают наизусть.


Спасибо!


Оформил первый пост, надеюсь теперь все понятно))