1 (изменено: Алексей Марч., 2012-03-31 16:57:38)

Тема: AHK: Воспроизведение макроса многократно

помогите пожалуйста     
 
как сделать чтоб при нажатии клавиши макрос воспроизводился многократно,
а при отпускании этой же клавиши прикращался мгновенно не зависимо от того на каком етапе цикла он выполняетса
(в начале или в конце).

что здесь не хватает или не так:

скрипт:

#NoEnv  ; Recommended for performance and compatibility with future AutoHotkey releases
SendMode Input  ; Recommended for new scripts due to its superior speed and reliability.
SetWorkingDir %A_ScriptDir%  ; Ensures a consistent starting directory.
NumpadIns::
Send, {NumpadEnd down}
Sleep, 424
Send, {NumpadEnd up}
sleep, 13
Send, {NumpadDown down}
Sleep, 424
Send, {NumpadDown up}
Return.

спасибо за ранее:cool:

2

Re: AHK: Воспроизведение макроса многократно

Крайне рекомендуется ознакомиться  с темой и ссылкой.

3 (изменено: Indomito, 2012-03-31 19:20:40)

Re: AHK: Воспроизведение макроса многократно

Алексей Марч. пишет:

как сделать чтоб при нажатии клавиши макрос воспроизводился многократно,

использовать While-loop

While [условие выполнения цикла]
 {
;Ваш скрипт
}
return

Для прерывания в любой точке запустите таймер SetTimer и используйте ExitApp

SetTimer, myLabel, 10
return
myLabel:
;код проверки и если нужно выполнить - ExitApp
return

Думаю всё верно, если я правильно понял вопрос. Просто прервать цикл в любой точке проблематично, хотя можно, но с извращениями... на мой взгляд.

P.S. И обязательно поправьте пост, т.е. то о чем сказал creature.ws

"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
Для NotePad++(подсветка синтаксиса, автозавершение и плагины(AutoSave и RunMe).
OS Windows 10 x64 Pro

4

Re: AHK: Воспроизведение макроса многократно

;код проверки и если нужно выполнить - ExitApp

незнаю как это написать ,
если можеш покажи пример пожалуйста
(типа когда кнопку отпустил, как вписать)

5

Re: AHK: Воспроизведение макроса многократно

Алексей Марч. пишет:

...мгновенно...

Это однопоточная программа, по этому всё зависит на каком этапе выполнения в цикле происходит отжим клавиши:

#NoEnv
SendMode, Input

NumpadIns::
   While, GetKeyState("NumpadIns", "P")
   {
      Send, {NumpadEnd Down}
      Sleep, !GetKeyState("NumpadIns", "P") ? -1:425
      Send, {NumpadEnd Up}
      Sleep, !GetKeyState("NumpadIns", "P") ? -1:15
   }
   Return

6 (изменено: Алексей Марч., 2012-04-05 14:10:29)

Re: AHK: Воспроизведение макроса многократно

Grey пишет:

Sleep, !GetKeyState("NumpadIns", "P") ? -1:425

скажи пожалуйста, что в коде значит  "P") ? 
есть ли програмы такае же как AHK только многопоточные?

7

Re: AHK: Воспроизведение макроса многократно

В данном коде использовал встроенную функцию GetKeyState, есть и одноимённая комманда. "P" параметр (сокращение от pressed, "T" - toggle (IMHO)).

8

Re: AHK: Воспроизведение макроса многократно

Нет, это сокращение от Physical.

9

Re: AHK: Воспроизведение макроса многократно

Понятно, спасибо.

10 (изменено: Indomito, 2012-04-01 18:30:26)

Re: AHK: Воспроизведение макроса многократно

Алексей Марч. пишет:

и есть ли програмы такае же как AHK токо многопоточные?

есть, например запусти три таймера и вычисляй что то.
Вот пример - GamePad.ahk правда она не доделана ещё до конца.

"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
Для NotePad++(подсветка синтаксиса, автозавершение и плагины(AutoSave и RunMe).
OS Windows 10 x64 Pro

11

Re: AHK: Воспроизведение макроса многократно

спасибо большое

12 (изменено: Gabe_#33, 2012-04-05 00:14:57)

Re: AHK: Воспроизведение макроса многократно

Будте любезны,помогите сделать чтобы сей скрипт "авто-выполнялся",без участия какой либо клавиши.

~*$W::
Loop
    {
GetKeyState, WState, W, P 
if WState = U 
break
ADRESTEXNIKI()
If adr_TEX := 0x0
break
ADRESCAMERI()
IF adr_CAM = 0x1
{
Send {F9 down}
Sleep,30
Send {F9 up}
}
    }

Тобишь с момента его включения,он начал без прерывно проверять переменную - "adr_TEX".И если она ровна нулю,начать заново, если  не ровна нулю,то продолжить далее...

13 (изменено: creature.ws, 2012-04-05 00:53:57)

Re: AHK: Воспроизведение макроса многократно

Loop
{
    ADRESTEXNIKI()
    If adr_TEX = 0x0
        break
    ADRESCAMERI()
    IF adr_CAM = 0x1
    {
        Send {F9 down}
        Sleep,30
        Send {F9 up}
    }
    Sleep 20
}

14

Re: AHK: Воспроизведение макроса многократно

Спасибо.

15

Re: AHK: Воспроизведение макроса многократно

Тело скипта - две секции "авто-выполнения-(АВ)" и далее по нажатию какой либо клавиши.
Почему первая секция (АВ) выпоняется нормально а вторая не работает?

SetScrollLockState , AlwaysOff 
SetNumLockState , AlwaysOn
#SingleInstance force
#Persistent
#NoEnv

SetTimer, KeepRunning 
Return

KeepRunning:
 
WinGet, szProcessName, ProcessName, A 
if szProcessName = blabla.exe 
{ 
Suspend, off 
} 
else 
{ 
Suspend, on 
} 
Return

Start:
Loop
{
    ADRESTEXNIKI()
    If adr_TEX = 0x0
    {
        Goto Start
    }
    ADRESCAMERI()
    IF adr_CAM = 0x1
    {
        Send {F9 down}
        Sleep,30
        Send {F9 up}
    }
    Sleep 20
}
Return



$Numpad4::
SetKeyDelay,15,30,Play
SendPlay %clipboard%
Return

16 (изменено: creature.ws, 2012-04-05 13:31:06)

Re: AHK: Воспроизведение макроса многократно

SetScrollLockState , AlwaysOff
SetNumLockState , AlwaysOn
#SingleInstance force
#Persistent
#NoEnv

SetTimer, KeepRunning ; 250 мс подразумевается
SetTimer, Start, -1   ; однократно и «прямо сейчас»
return                ; вот здесь то и конец единственной и неповторимой «секции автовыполнения»

KeepRunning:
    WinGet, szProcessName, ProcessName, A
    if szProcessName = blabla.exe
        Suspend, off
    else
        Suspend, on
    return

Start:
    Loop
    {
        Sleep 30
        ADRESTEXNIKI()
        If adr_TEX = 0x0
            Continue
        ADRESCAMERI()
        IF adr_CAM = 0x1
        {
            Send {F9 down}
            Sleep,30
            Send {F9 up}
        }
    }
    return

$Numpad4::
    SetKeyDelay,15,30,Play
    SendPlay %clipboard%
    return

17

Re: AHK: Воспроизведение макроса многократно

Огромное Спасибо=)