1

Тема: AHK: Избежать прерывания процесса выполнения

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

#SingleInstance off

Param = %1%
IsFunc(Param) ? %Param%() : proc1() 
Return

proc1()  {  
    Run, %A_ScriptFullPath% proc2 
    loop
        ToolTip % A_ThisFunc "`n" A_TickCount "`nProcessId = " DllCall("GetCurrentProcessId"),111,111
}

proc2()  {
    loop
        ToolTip % A_ThisFunc "`n" A_TickCount "`nProcessId = " DllCall("GetCurrentProcessId"),111,222
}

Но мне как-то нужно туда еще запихнуть этот скрипт:

$vk20::  
Loop  
{
    if not GetKeyState("vk20", "P")  
        break 
send {Space down}
sleep, 20
send {Space up}
sleep, 20
send {Space down}
sleep, 20
send {Space up}
sleep, 20
send {Space down}
sleep, 20    
send {Space up}
sleep, 20
send {Space down}
sleep, 20
send {Space up}
sleep, 20
send {Space down}
sleep, 20
send {Space up}
sleep, 20
send {Space down}
sleep, 20
send {Space up}
sleep, 20
}
return

Если их соединить таким образом:

#SingleInstance off

Param = %1%
IsFunc(Param) ? %Param%() : proc1() 
Return

proc1()  {  
    Run, %A_ScriptFullPath% proc2 
    loop
        ToolTip % A_ThisFunc "`n" A_TickCount "`nProcessId = " DllCall("GetCurrentProcessId"),111,111
}

proc2()  {
    loop
        ToolTip % A_ThisFunc "`n" A_TickCount "`nProcessId = " DllCall("GetCurrentProcessId"),111,222
}

$vk20::  
Loop  
{
    if not GetKeyState("vk20", "P")  
        break 
send {Space down}
sleep, 20
send {Space up}
sleep, 20
send {Space down}
sleep, 20
send {Space up}
sleep, 20
send {Space down}
sleep, 20    
send {Space up}
sleep, 20
send {Space down}
sleep, 20
send {Space up}
sleep, 20
send {Space down}
sleep, 20
send {Space up}
sleep, 20
send {Space down}
sleep, 20
send {Space up}
sleep, 20
}
return

То при зажатии пробела видно по тултипу что второй поток прерывается. Как этого избежать?
Заранее спасибо за ответ)

2

Re: AHK: Избежать прерывания процесса выполнения

Не охота сейчас вникать, но у тебя ведь хоткей $vk20:: сразу в 2 скриптах.
Думаю что нужно использовать команду Hotkey только в нужном.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

3 (изменено: Dworkin, 2014-07-02 02:31:05)

Re: AHK: Избежать прерывания процесса выполнения

Прочитал в справке про Hotkey и все равно не понял куда его сувать.

4

Re: AHK: Избежать прерывания процесса выполнения

Dworkin, что у нас ставится в конце предложения?

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

5

Re: AHK: Избежать прерывания процесса выполнения

teadrinker пишет:

Dworkin, что у нас ставится в конце предложения?

Всего одну точку пропустил) Изменил. Можете удалять эти сообщения.

6

Re: AHK: Избежать прерывания процесса выполнения

Если всё ещё не понятно, куда совать, то можно так:


#SingleInstance off

Param = %1%
IsFunc(Param) ? %Param%() : proc1() 
Return

proc1()  {
    Hotkey, $vk20, Sub1                                                
    Run, %A_ScriptFullPath% proc2 
    loop
        ToolTip % A_ThisFunc "`n" A_TickCount "`nProcessId = " DllCall("GetCurrentProcessId"),111,111
}

proc2()  {
    loop
        ToolTip % A_ThisFunc "`n" A_TickCount "`nProcessId = " DllCall("GetCurrentProcessId"),111,222
}

Sub1:  
Loop  
{
    if not GetKeyState("vk20", "P")  
        break 
send {Space down}
sleep, 20
send {Space up}
sleep, 20
send {Space down}
sleep, 20
send {Space up}
sleep, 20
send {Space down}
sleep, 20    
send {Space up}
sleep, 20
send {Space down}
sleep, 20
send {Space up}
sleep, 20
send {Space down}
sleep, 20
send {Space up}
sleep, 20
send {Space down}
sleep, 20
send {Space up}
sleep, 20
}
return