1

Тема: Существует ли команда проверки наличия иконки в трее?

Существует ли команда проверки наличия иконки в трее?

2

Re: Существует ли команда проверки наличия иконки в трее?

В AHK такой команды точно нет. А что, у вас бывает такое, что в трее нет ни одной иконки?

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

3

Re: Существует ли команда проверки наличия иконки в трее?

teadrinker пишет:

В AHK такой команды точно нет. А что, у вас бывает такое, что в трее нет ни одной иконки?

Нет, я имел ввиду проверить есть ли конкретная иконка.

Например: проверяется - если есть, то горячая кнопка в скрипте отсылает одно, если нет такой иконки - другое.

Потому что:
Если закрывается один скрипт и открывается другой, кнопка, вызвавшая этот процесс, новому скрипту отсылает нажатие и, если там что-то назначено, происходит выполнение. Проблему не выходит решить через OnExit задав запуск второго скрипта после закрытия первого, всё равно клавиша, которая вызывает закрытие первого, будет запускать то что на неё назначено во втором, открываемом скрипте.
Проблему можно решить обходным путём при помощи разных извращений.
Я подозревал что прямого пути нет. Но навсякий случай спросил.

4

Re: Существует ли команда проверки наличия иконки в трее?

Если вопрос по следам этой темы, тогда подход крайне неверный. Знаете, есть выражение «чесать левой рукой правое ухо»? Ваш вариант — это «чесать левой рукой правое ухо, просунув руку между ног». Советую искать способ объединить оба скрипта в один.

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

5 (изменено: kamenschik, 2015-05-11 22:30:55)

Re: Существует ли команда проверки наличия иконки в трее?

Нет, тот вопрос я решил объединением. На данный момент я его ещё подправил так, что крестовина, пока не отпустишь, повторяет действие. Использовал для этого такой приём:

 GetKeyState, POV, JoyPOV
#if (POV >= 0)
POV := S

IfInString, POV, %S%
    SetTimer, WatchPOV, 100
#if

WatchPOV:
SetKeyDelay 100

Loop
{
GetKeyState, POV, JoyPOV
if POV > 31500
    Send, {Up}
else if POV between 0 and 4500
    Send, {Up}
else if POV between 4501 and 13500
    Send, {Right}
else if POV between 13501 and 22500
    Send, {Down}
else if POV between 22500 and 31500
    Send, {Left}
else
    break
}

Вот весь объединённый скрипт:

#Persistent

Stick1Multiplier = 0.3
Stick2Multiplier = 0.015

Stick1Threshold = 3
Stick2Threshold = 3

InvertYAxis := false
InvertZAxis := false

ButtonLeft = 1
ButtonRight = 3

Stick1Number = 1
Stick2Number = 1

#SingleInstance

Stick1Prefix = %Stick1Number%Joy
Stick2Prefix = %Stick2Number%Joy
Hotkey, %Stick1Prefix%%ButtonLeft%, ButtonLeft
Hotkey, %Stick2Prefix%%ButtonRight%, ButtonRight

Stick1ThresholdUpper := 50 + Stick1Threshold
Stick1ThresholdLower := 50 - Stick1Threshold
if InvertYAxis
    YAxisMultiplier = -1
else
    YAxisMultiplier = 1

SetTimer, WatchStick1, 10

Stick2ThresholdUpper := 50 + Stick2Threshold
Stick2ThresholdLower := 50 - Stick2Threshold
if InvertZAxis
    ZAxisMultiplier = -1
else
    ZAxisMultiplier = 1

SetTimer, WatchStick2, 10

 GetKeyState, POV, JoyPOV
#if (POV >= 0)
POV := S

IfInString, POV, %S%
    SetTimer, WatchPOV, 100
#if

ButtonLeft:
SetMouseDelay, -1
MouseClick, left,,, 1, 0, D
SetTimer, WaitForLeftButtonUp, 10
return

ButtonRight:
SetMouseDelay, -1 
MouseClick, right,,, 1, 0, D
SetTimer, WaitForRightButtonUp, 10
return

WaitForLeftButtonUp:
if GetKeyState(Stick1Prefix . ButtonLeft)
    return
SetTimer, WaitForLeftButtonUp, off
SetMouseDelay, -1
MouseClick, left,,, 1, 0, U
return

WaitForRightButtonUp:
if GetKeyState(Stick2Prefix . ButtonRight)
    return 
SetTimer, WaitForRightButtonUp, off
MouseClick, right,,, 1, 0, U
return

WatchStick1:
MouseNeedsToBeMoved := false
SetFormat, float, 03
GetKeyState, joyx, %Stick1Number%JoyX
GetKeyState, joyy, %Stick1Number%JoyY

if joyx > %Stick1ThresholdUpper%
{
    MouseNeedsToBeMoved := true
    DeltaX := joyx - Stick1ThresholdUpper
}
else if joyx < %Stick1ThresholdLower%
{
    MouseNeedsToBeMoved := true
    DeltaX := joyx - Stick1ThresholdLower
}
else
    DeltaX = 0
if joyy > %Stick1ThresholdUpper%
{
    MouseNeedsToBeMoved := true
    DeltaY := joyy - Stick1ThresholdUpper
}
else if joyy < %Stick1ThresholdLower%
{
    MouseNeedsToBeMoved := true
    DeltaY := joyy - Stick1ThresholdLower
}
else
    DeltaY = 0
if MouseNeedsToBeMoved
{
    SetMouseDelay, -1
    MouseMove, DeltaX * Stick1Multiplier, DeltaY * Stick1Multiplier * YAxisMultiplier, 0, R
}
return

WatchStick2:
MouseNeedsToBeMoved := false
SetFormat, float, 03
GetKeyState, joyr, %Stick2Number%JoyR
GetKeyState, joyz, %Stick2Number%JoyZ

if joyr > %Stick2ThresholdUpper%
{
    MouseNeedsToBeMoved := true
    DeltaX := joyr - Stick2ThresholdUpper
}
else if joyr < %Stick2ThresholdLower%
{
    MouseNeedsToBeMoved := true
    DeltaX := joyr - Stick2ThresholdLower
}
else
    DeltaX = 0
if joyz > %Stick2ThresholdUpper%
{
    MouseNeedsToBeMoved := true
    DeltaY := joyz - Stick2ThresholdUpper
}
else if joyz < %Stick2ThresholdLower%
{
    MouseNeedsToBeMoved := true
    DeltaY := joyz - Stick2ThresholdLower
}
else
    DeltaY = 0
if MouseNeedsToBeMoved
{
    SetMouseDelay, -1
    MouseMove, DeltaX * Stick2Multiplier, DeltaY * Stick2Multiplier * ZAxisMultiplier, 0, R
}
return


WatchPOV:
SetKeyDelay 100

Loop
{
GetKeyState, POV, JoyPOV
if POV > 31500
    Send, {Up}
else if POV between 0 and 4500
    Send, {Up}
else if POV between 4501 and 13500
    Send, {Right}
else if POV between 13501 and 22500
    Send, {Down}
else if POV between 22500 and 31500
    Send, {Left}
else
    break
}

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

Joy11::yy:=1
#if yy
Joy1::
KeyWait, Joy1
{
Run, 2.ahk
ExitApp, 1.ahk
}
 return
#if

6

Re: Существует ли команда проверки наличия иконки в трее?

kamenschik, ясно, только цитировать предыдущий пост не нужно.

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