Вот так правильно.
Кроме того добавил сообщение в трей о состоянии потоков в виде 0:0:0
0 означает выкл, 1 вкл
порядок цифр соответствует 1 2 3 потоку
// переключатель 1
IF(ISKEYDOWN(#p) = 1)
$run1 = $run1 ^ 1
IF($run1 = 0)
SETTHREAD(cl, 2)
waitms(20)
IF(ISKEYDOWN(#v) = 1)
keyUp(#v)
END_IF
ELSE
SETTHREAD(cl, 1)
END_IF
WHILE(ISKEYDOWN(#p) = 1)
waitms(20)
END_CYC
HINTPOPUP(STRCONCAT($run1,":",$run2,":",$run3), "Переключение")
END_IF
// переключатель 2
IF(ISKEYDOWN(#o) = 1)
$run2 = $run2 ^ 1
IF($run2 = 0)
SETTHREAD(cll,2)
waitms(20)
IF(ISKEYDOWN(#d) = 1)
keyUp(#d)
END_IF
ELSE
SETTHREAD(cll, 1)
END_IF
WHILE(ISKEYDOWN(#o) = 1)
waitms(20)
END_CYC
HINTPOPUP(STRCONCAT($run1,":",$run2,":",$run3), "Переключение")
END_IF
// переключатель 3
IF(ISKEYDOWN(#l) = 1)
$run3 = $run3 ^ 1
IF($run3 = 0)
SETTHREAD(pl,2)
waitms(20)
IF(ISKEYDOWN(#4) = 1)
keyUp(#4)
END_IF
ELSE
SETTHREAD(pl, 1)
END_IF
WHILE(ISKEYDOWN(#l) = 1)
waitms(20)
END_CYC
HINTPOPUP(STRCONCAT($run1,":",$run2,":",$run3), "Переключение")
END_IF
waitms(30)
// поток 1
THREAD(cl, 0)
WAITMS(1)
keyDown(#v)
waitms(rnd(73,121))
keyUp(#v)
waitms(rnd(1711,2102))
END_THREAD
// поток 2
THREAD(cll, 0)
WAITMS(1)
waitms(rnd(262,373))
keyDown(#d)
waitms(rnd(262,373))
move(1027,73)
waitms(rnd(262,373))
DBLCLICK(1027,73)
waitms(rnd(262,373))
keyUp(#d)
waitms(rnd(4325,5046))
END_THREAD
// поток 3 ожидание пикселя
THREAD(pl, 0)
WAITMS(1)
GETSCREEN(804,768,804,768)
IF(PXL(804,768) = 1710830)
KEYDOWN(#4)
WAITMS(RND(73,121))
KEYUP(#4)
WAIT(RND(63,101))
ELSE
WAITMS(50)
END_IF
END_THREAD