2013-03-29 4 views
2

Ниже сценария работает нормально.Таймер работает только один раз

Он отправляет клики мыши каждые 4 секунды в KingSoft Writer. Но когда я изменяю длину таймера на -4000 вместо 4000, чтобы таймер работал только один раз , сценарий больше не работает ни разу. Я больше не могу отправлять клики мыши на KingSoft Writer. Что я делаю неправильно?

#Persistent 
#SingleInstance 


SetTimer, CheckApp, 4000 
Return 


CheckApp: 
IfWinActive, ahk_class QWidget 
{ 
    sleep 2000 
Click 486, 15 
Click 570, 93 
} 
Return 

ответ

2

Прежде чем ответить на этот вопрос. Не могли бы вы вернуться к предыдущему вопросу и пометить ответ, который вы получили там, нажав на отметку WHITE, чтобы включить GREEN.

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

#Persistent 
#SingleInstance 
SetTimer, CheckApp, 4000 
Return 

CheckApp: 
IfWinActive, ahk_class QWidget 
{ 
    SetTimer, CheckApp, Off  
    Click 486, 15 
    Click 570, 93 
} 
Return 

Я удалил свой сон, 2000. Добавление этой команды блоки сна АХК 50% времени (сонная 50%) и не добавляет ничего полезного. Это даже делает шанс, что другое приложение крадет фокус за эти 2 секунды больше, поэтому щелчки мыши могут перейти в другое приложение ... Вам нужно использовать щелчки мыши или вы можете использовать быстрые клавиши. Позиции мыши имеют тенденцию быть ненадежными, поскольку меню перемещаются или расширяются/сокращаются.

Update

#Persistent 
#SingleInstance 
Return ; Prevent the [Win]+w from executing on startup of script. 

#w:: ; [Win]+w launches PolyEdit, waits for window and sends two mouse clicks. 
Run, path to the PolyEdit window.exe 
WinWaitActive, ahk_class QWidget 
Sleep, 1000 
Click 486, 15 
Click 570, 93 
Return 

Теперь вы можете поместить скрипт АХК в окнах меню и запуск PolyEdit начать через [Win] + ш (или любой другой клавиши вы определяете ...)

Update 2

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

Но здесь вы идете!

#Persistent 
#SingleInstance 
SetTimer, CheckApp, 400 
Return 
InitiateKS := true 

CheckApp: 
IfWinExist, ahk_class QWidget 
{ 
    If InitiateKS 
    { 
     InitiateKS := false 
     WinActivate, ahk_class QWidget 
     TrayTip, KingSoft, Started, 1 
     ;Click 486, 15 
     ;Click 570, 93 
    } 
} 
Else ; if no KingSoft is running 
{ 
     InitiateKS := true 
} 
Return 
+0

Я повернул белую галочку на зеленый, как вы просили. Я не знал об этой функции. Спасибо за отличный ответ! я в настоящее время приближаемся к решению, используя приведенный ниже сценарий: #Persistent WinWaitActive, ahk_class TMainForm Отправить сейчас время Возвращение Данный скрипт работает. Но этого не хватает. Мне нужно заставить его работать, когда я закрываю текущее окно PolyEdit и откройте второе окно PolyEdit. Прямо сейчас этого не происходит. Сейчас я должен перезагрузить скрипт до , открывая второе окно PolyEdit. Я не хочу перезагружать скрипт. Здесь я потерялся. – user2216119

+0

В этой ситуации почему бы не использовать сценарий ahk для запуска окна PolyEdit с помощью горячей клавиши. См. Измененный сценарий выше. –

+0

Я согласен с Робертом. Я очень благодарен за ваш вклад в то, как принять ответ. Я согласен с вами на 100%. Что касается использования горячей клавиши для запуска скрипта. Да, это работает.Но я искал сценарий, который работает без горячей клавиши. Правильно ли я предполагаю, что их нет? – user2216119

Смежные вопросы