1 (изменено: elektrovenik, 2015-03-12 05:25:19)

Тема: Назначение хоткеев в GUI для активации макро-циклов в скрипте

Задумка элементарна: сделать скрипт, управлять которым сможет человек не сведущий в ahk. Управление будет осуществляться через GUI. В нем должны задаваться горячая клавиша и тайминг команды sleep.

Gui, Add, Text,, Клавиша активации
Gui, Add, Text,, Время "танца" (ms)
Gui, Add, Hotkey, vKeyStart ym
Gui, Add, Edit, vTimeDance
Gui, Add, Button, default, OK
Gui, Show,, Танцуля
return

ButtonOK:
Gui, Submit
return

%KeyStart%:: ; Тут специально оставил код, чтобы было понятно чего хочу, но не знаю как реализовать.
    While GetKeyState("%KeyStart%", "P")
    {
        Send {vk41 down}
        sleep %TimeDance%
        Send {vk41 Up}
    If !GetKeyState("%KeyStart%", "P")
    break
    Sleep, 10
        Send {vk44 down}
        sleep %TimeDance%
        Send {vk44 Up}
}
return

End:: ExitApp

Пробовал экспериментировать с кодом от serzh82saratov

serzh82saratov пишет:

Gui, Add, Edit, x112 y310 w320 h20 vEdit1
Gui, Add, Hotkey, x12 y160 w90 h20 vHotkey 
Gui, Add, Button, x202 y340 w90 h30 gButton, Подтвердить
Gui, Show 
return 
    
Button:
    GuiControlGet, Hotkey 
    Gui, Destroy
    Hotkey, % Hotkey, HKLabel, UseErrorLevel 

HKLabel:
    MsgBox Код  
    return

, но добром это не кончилось, только больше сам себя запутал.
Подскажите пожалуйста, как же реализовать перенос хоткея из Gui в скрипт.

2

Re: Назначение хоткеев в GUI для активации макро-циклов в скрипте

Так, наверно.


Gui, Add, Text,, Клавиша активации
Gui, Add, Text,, Время "танца" (ms)
Gui, Add, Hotkey, vKeyStart ym
Gui, Add, Edit, vTimeDance
Gui, Add, Button, default, OK
Gui, Show,, Танцуля
return

ButtonOK:
Gui, Submit
Hotkey, %KeyStart%, Dance
Gui, Destroy
return

Dance:
    While GetKeyState(KeyStart, "P")
    {
        Send {vk41 down}
        sleep %TimeDance%
        Send {vk41 Up}
        Sleep, 10
        Send {vk44 down}
        sleep %TimeDance%
        Send {vk44 Up}
    }
    return

End:: ExitApp

3 (изменено: elektrovenik, 2015-03-12 12:18:20)

Re: Назначение хоткеев в GUI для активации макро-циклов в скрипте

YMP пишет:

Так, наверно.

Спасибо большое YMP! Но мне сейчас хочется биться головой об стену просто!!! Я делал так, как сделали Вы. Единственное отличие, что я в коде использовал такой синтаксис:

While GetKeyState("%KeyStart%", "P")
If !GetKeyState("%KeyStart%", "P")

И ведь сколько искал, нигде не видел понятного объяснения синаксиса или хоть намека на то, что переменная KeyStart должна записываться для команды GetKeyState в чистом виде, не обрамленная кавычками или процентами....

4

Re: Назначение хоткеев в GUI для активации макро-циклов в скрипте

Тут дело как раз в том, что GetKeyState() — не команда, а функция. Поэтому для неё применяется "синтаксис выражений", а не "синтаксис команд". Команды — это то, что вызывается без скобок ().