Linux - Завершение скрипта AutoKey с использованием сочетаний клавиш
Итак, я новичок с приложением AutoKey на моем элементарном устройстве iOS, и я просто играю с некоторыми пользовательскими сценариями.
Что мне показалось странным, так это то, что не существует простой возможности завершить работающий скрипт.
Итак, есть ли хороший и простой способ для достижения этой цели.
Простите за некомпетентность. ._.
1 ответ
В настоящее время такого метода не существует.
Autokey использует простой механизм для одновременного запуска сценариев: каждый сценарий выполняется в отдельном потоке Python. Он использует эту оболочку для запуска сценариев с использованием класса ScriptRunner. Есть несколько методов для уничтожения произвольных запущенных потоков Python, но эти методы ни приятны, ни просты. Вы можете найти ответы для общего случая этого вопроса здесь: " Есть ли способ убить поток в Python?"
Есть одна хорошая возможность, но она не очень проста и требует поддержки ваших скриптов. Вы можете "отправить" сигнал остановки в сценарии, используя глобальное хранилище сценариев. Документацию по API можно найти здесь:
Предположим, это скрипт, который вы хотите прервать:
#Your script
import time
def crunch():
time.sleep(0.01)
def processor():
for number in range(100_000_000):
crunch(number)
processor()
Привязать скрипт остановки к горячей клавише:
store.set_global_value("STOP", True)
И измените ваш сценарий так, чтобы он опрашивал значение переменной STOP и прерывал, если он равен True:
#Your script
import time
def crunch():
time.sleep(0.01)
def processor():
for number in range(100_000_000):
crunch(number)
# Use the GLOBALS directly. If not set, use False as the default.
if store.GLOBALS.get("STOP", False):
# Reset the global variable, otherwise the next script will be aborted immediately.
store.set_global_value("STOP", False)
break
processor()
Вы должны добавить такую проверку остановки в каждый горячий или длительный путь кода. Это не поможет, если что-то заблокировало ваш скрипт.