Я пытаюсь создать простую утилиту с открытым исходным кодом для Windows, используя Python, которая может выполнять определенные пользователем действия с выделенным текстом текущего активного окна. Утилиту следует активировать с помощью заранее заданного сочетания клавиш.
Использование частично описано в следующем примере:
- Пользователь выделяет текст с помощью мыши или клавиатуры (в любом окне приложения)
- Пользователь нажимает заранее заданное сочетание клавиш.
- Выбранный текст извлекается нашей утилитой или копируется в буфер обмена (оба подхода подойдут)
- Действие, зависящее от сочетания клавиш, выполняется над выделенным текстом.
Меня озадачивает шаг 3. Как выбранный текст извлекается из активного окна. Это должно работать со всеми приложениями.
Я использую модуль pywin32.
Заранее благодарим за ответы и советы.
Обновление №1:
Оказывается, есть два подхода к решению задачи:
- Найдите активное окно, затем отправьте ему сообщение / нажмите клавишу (Ctrl-C), чтобы скопировать выделенный текст в буфер обмена. Затем утилита может работать с текстом, обращаясь к нему с помощью функций, связанных с буфером обмена.
- Найдите активное окно, затем извлеките выделенный текст напрямую (не копируя его в буфер обмена). Это кажется более сложным, чем первый подход.
В качестве отправных точек:
Получите идентификатор активного окна, как указал Анураг Униял в своем ответить.
Или получите объект окна с помощью следующего кода:
import win32ui
wnd = win32ui.GetForegroundWindow()
print wnd.GetWindowText()