Как можно написать сценарий autokey для закрытия активного окна?

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

Я пробовал, чтобы autokey нажимал комбинацию клавиш alt+f4 из autokey, но это не работает, поскольку autokey, по- видимому, не разрешает доступ к общесистемным сочетаниям клавиш. Я и поэтому в растерянности от того, как удается закрыть окна.

(Я настраиваю Quod Libet, чтобы сделать его более удобным для личного использования, и пытаюсь упростить процесс редактирования тегов, заменив комбинацию закрытия окна "Редактировать теги"> выберите следующий музыкальный файл> откройте новый "Редактировать теги" window` с простым скриптом shift+right- active.)

Есть идеи?

3 ответа

Не знаю, работает ли это с любым окном, но keyboard.send_keys("<ctrl>+w") дал мне результат, который я хотел с Quod Libet.

      import subprocess
p2 = subprocess.Popen("killall main") # main its a example

работает у меня и у меня с использованием операционной системы Kubuntu 20.04

затем используйте любую горячую клавишу, которая вам нравится

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

Если вы все равно хотите сделать это в общем, вы не можете полагаться на какие-либо ярлыки, чтобы сделать это.

Вот несколько стратегий, которые должны работать:

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

  2. Если вы знаете, что хотите закрыть определенное окно позже, используйте для получения его идентификатора окна, когда вы впервые открыли окно, и его будет легче найти. Сохраните этот идентификатор окна в файле или в сохраненной переменной AutoKey, а затем используйте его, чтобы указатькакое окно закрыть.

  3. Попросите AutoKey найти и щелкнуть мышью по xзначку закрытия окна, который обычно находится в правом верхнем углу окна.

    Это можно сделать, но это немного сложно.

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

    Лучший способ сделать это — напрямую использовать пакет Xautomation (черезвызов в сценарии AutoKey) для поиска правильного окна, а затем длявнутри этого окна. Если это удастся, он вернет абсолютные координаты экрана правильного x, которые вы можете затем щелкнуть с помощьюиспользуя координаты, возвращенныепосле разбора их изстрока ответа.

    Использование Xautomation включает в себя предварительную подготовку изображений, которые он будет искать, и некоторую другую работу, выходящую за рамки этого ответа.

    AutoKey взаимодействует с Xautomation с помощью вызова API, но в настоящее время он не поддерживает функцию поиска вложенных изображений, поэтому наш вызов API найдет все s, но вам придется xнаписать собственное решение, чтобы определить, какое из них является правильным x.

Поскольку это не очень простая проблема, а не решение для копирования и вставки, если вам нужна помощь в ее реализации, опубликуйте на Gitter.

Другие вопросы по тегам