Я ищу способ генерации ctrl+A
(выберите все), а затем ctrl+x
в сценарии python. Я знаю, как генерировать это в определенном приложении (pywinauto и другие модули делают это). Но я ищу способ отправить эти ключи в любых приложениях (в любом поле активных окон). Я хочу, чтобы запустить сценарий Python, содержащий эти ключи в любом местеpywinauto (или другие): эмулировать Ctrl + A и Ctrl + X в любом месте (не только в указанном приложении)
EDIT (сценарий будет запуск с помощью комбинации клавиш Подробности ниже (1).): Я не пытаюсь копировать/прошлое в командных окнах (см. 2 последних предложения). Мой сценарий отправить ключи в командных окнах, но это проблема, которую я пытаюсь решить ...
Использование питона pywinauto (или Ctypes или другие модули)
Я попытался несколько предложений, перечисленных here с тем же результатом.
Я думал, что pywinauto может это сделать. После pywinauto latest documentation я пробовал:
- открыть (любой) приложение, содержащее текстовое поле (это активные окна)
- место курсор, где вы хотите, чтобы выбрать все + вырезано/прошлое
запустить скрипт пыльник с помощью ярлыка (так что вы не будете оставлять активные окна)
from pywinauto.keyboard import SendKeys
SendKeys('^a^x')
Результат Код печати только ^A^X
в консоли питона. Он не делает то, что он должен делать в области активного окна (где я разместил свой курсор): это не select all
+ cut the text
.
Использование autohotkey:
Единственный способ я нашел, чтобы имитировать реальнуюcrtl+A
ctrl+C
это с помощью AutoHotkey (он работает, но это не решение питона):
Сохраните этот текст в моем скрипте AHK: select_copy.ahk
Send, ^a
Send, ^x
создать другой сценарий АХК под названием shortcut.ahk, где вы зададите ярлык для запуска select_copy.ahk (ярлык.АХК sould работать постоянно в фоновом режиме окна (2))
!^+G:: Run select_copy.ahk , C:\Users\Me\Desktop
(то есть: когда я ударил ctrl+alt+shift+G
запустить скрипт select_copy.ahk
)
результат: Он работает. когда я вызываю ahk, он выбирает/режет вещи в активных окнах.
Комбинация обоих не работает
Я попытался запустить select_copy.ahk внутри питона сценария (с использованием subprocess.call), но я в конечном итоге с тем же результатом, чем pywinauto (или Ctypes): он печатает только ^A^X
в консоли, но не выбирает & cut. Поэтому мне интересно, может ли python действительно делать то, что делает autohotkey.
(1) Что будет делать скрипт: я запустил скрипт (с помощью сочетания клавиш) в том или ином редакторе HTML, он вырежет весь текст, проанализирует его исходный код, внесите некоторые изменения, вернув данные в clipbboard и пропустить его. Мне не хватает первой части (выберите все + вырезать) и последней части (прошлой).
(2) Это не очень важно, так как shortcut.ahk содержит также все мои другие ярлыки и скрипты ahk.
Какое приложение вы пытаетесь это сделать? Консоль (cmd.exe) не может принимать Ctrl + A, даже если вы делаете это вручную на своей клавиатуре! Вам также необходимо установить фокус на элемент управления редактированием, прежде чем нажимать Ctrl + A. Поэтому может потребоваться более сложный код, если вы переключитесь на окно проводника, чтобы щелкнуть ярлык. –
@VasilyRyabov за ваш ответ! CtrlX должен работать с несколькими приложениями, которые содержат html-редактор (в основном редактор tinyMCE), в браузере (firefox, chrome) и других приложениях. (AutoHotkey -.ahk- делает это). Нет, мне неинтересно останавливать что-либо в консоли. Python просто запускает его в консоли, но он не нужен. Предыдущее сокращение должно применяться в активных окнах. Я запускаю скрипт с помощью AHK-ярлыка (ctrl + shift + p), не выходя из редактора. –
(вкратце: это должно работать в любом месте, в любом поле, где разрешено selectA и разрезать прошлое, как обычный ctrl + x) –