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

!r::
Send, {SHIFT DOWN}
sleep 100
send {F3}
sleep 100
send {SHIFT UP}
sleep 3000 
send tm{ENTER}
sleep 3000
send a
sleep 100
send {ENTER 3}
sleep 100
send c
sleep 100
send nr{F4}
return

!p::
Send, {SHIFT DOWN}{F3}{SHIFT UP}
sleep 3000 
send tm{ENTER}
sleep 3000
send a{ENTER}{ENTER}{ENTER}
sleep 500
send c
sleep 500
send np{F4}
return

!a::
IfWinNotActive, Finacle - Microsoft Internet Explorer, , WinActivate,    Finacle - Microsoft Internet Explorer, 
WinWaitActive, Finacle - Microsoft Internet Explorer, 
Send, {SHIFT DOWN}{F3}{SHIFT UP}
Sleep, 3000
send acli{ENTER}
Sleep, 4000
send {ENTER}
send ^f
sleep 100
send 01.03.2015
sleep 100
send {shiftdown}{tab}{shiftup}
sleep 200
send {CTRLDOWN}v{CTRLUP}
return
;there are so many more hotkeys and hotstrings in this script

аналогично содержание второго сценария таково

#Persistent
SetTimer, forFinacle, 10000 ; check every 10 seconds
#IfWinActive, Finacle - Microsoft Internet Explorer
~F4::timeF4:=A_TickCount
~F10::timeF10:=A_TickCount

forFinacle:
If (A_TickCount-timeF4 > 800000) && (A_TickCount-timeF10 > 800000)
{
WinActivate Finacle - Microsoft Internet Explorer 
Send {F4}
timeF4:=A_TickCount
}
return

Поэтому я хочу, чтобы содержимое обоих сценариев было в одном сценарии, и этот сценарий должен работать идеально. Пожалуйста, помогите мне. большое спасибо.

2 ответа2

0

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

Например, если вы поместите этот второй блок кода в начало всего вашего консолидированного сценария, контекст для всех горячих клавиш будет #IfWinActive, Finacle - Microsoft Internet Explorer пока не встретится другая директива или пустая директива #IfWinActive .

Во избежание ошибок вырезания и вставки и других раздражающих проблем, например, перемещения части кода горячей клавиши из одного места в большом скрипте в другое место, я склонен свободно использовать операторы #IfWinActive и всегда оставлять пустым после каждого раздел, а также в конце файла (из-за задокументированных проблем с исходной реализацией).

0

Сохраняет скрипт постоянно запущенным (то есть до тех пор, пока пользователь не закроет его или не обнаружит ExitApp).

#Persistent

Если эта директива присутствует где-либо в сценарии, этот сценарий будет продолжать работать после завершения секции автозапуска (верхняя часть сценария). Это полезно в тех случаях, когда скрипт содержит таймеры и / или пользовательские пункты меню, но не горячие клавиши, горячие строки или любое использование OnMessage () или Gui.

Если эта директива добавлена к существующему сценарию, вы можете изменить некоторые или все вхождения Exit на ExitApp. Это связано с тем, что Exit не прерывает постоянный скрипт; он завершает только текущий поток.

В v1.0.16+ эта директива также делает сценарий единичным экземпляром. Чтобы изменить это или изменить поведение отдельного экземпляра, см.

Директива #SingleInstance.

директива #SingleInstance

Определяет, может ли скрипт запускаться снова, когда он уже запущен.

#SingleInstance [force | ignore | off]

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .