Форум сайта python.su
Привет Друзья!
У меня вопрос.
Как можно отследить срабатывание буфера обмена?
Ну то есть… если я скопировал текст, то как можно “отловить” этот процесс…
Причем, понятно, что через keyboard или piautogui можно отследить по клавишам…но беда в том, что у меня 4 активных раскладки клавиатуры (языка ввода), на английской раскладке отслеживание клавиш сработает корректно, а вот если другой язык ввода задействован, то хана, ошибка возникает…
Да и геморно этот процесс через клавиши отлавливать…((((( код выглядит “костыльно”((((
Вероятно, можно как-то отследить активность самого буфера через какой-то модуль…
ВОПРОС: Через какой модуль можно отследить работу буфера ????
please help)))
Офлайн
PesЕсли windows то через winapi. Но опять же в том фрэймверке который вы используете для GUI должен был обработчик соответсвующего события.
Привет Друзья!У меня вопрос. Как можно отследить срабатывание буфера обмена? Ну то есть… если я скопировал текст, то как можно “отловить” этот процесс…Причем, понятно, что через keyboard или piautogui можно отследить по клавишам…но беда в том, что у меня 4 активных раскладки клавиатуры (языка ввода), на английской раскладке отслеживание клавиш сработает корректно, а вот если другой язык ввода задействован, то хана, ошибка возникает…Да и геморно этот процесс через клавиши отлавливать…((((( код выглядит “костыльно”((((Вероятно, можно как-то отследить активность самого буфера через какой-то модуль…ВОПРОС: Через какой модуль можно отследить работу буфера ????please help)))
Офлайн
Спасибо!…да, Windows)
Полазил, поковырял, что-то не могу найти чего-то вразумительного и ясного (((
Вопрос покоя не даёт… )))
У кого-нибудь есть ещё светлые мысли???
Офлайн
PesЭто где же вы лазили? первые ссылки в гугле по запросу “winapi clipboard”
Полазил, поковырял, что-то не могу найти чего-то вразумительного и ясного (((
Monitoring Clipboard Contentsкаким из этих трех способов пользоваться решать вам..
There are three ways of monitoring changes to the clipboard. The oldest method is to create a clipboard viewer window. Windows 2000 added the ability to query the clipboard sequence number, and Windows Vista added support for clipboard format listeners. Clipboard viewer windows are supported for backward compatibility with earlier versions of Windows. New programs should use clipboard format listeners or the clipboard sequence number.
[code python][/code]
Офлайн
оххх)) тяжко мне это всё. С английским то беда у меня(((
+ не забывайте про мои раскладки…
BM21 и PEHDOM благодарю за помощь, но уж больно сложны эти рекомендации…
Стало быть, не в силах я вразумить суть описанного в тех статеюшках….даже с переводчиком…
Для таких ОЛОЛОШ как я, которые в английском не сильны предлагаю вам решение, которое нашёл на одном из форумов….где один очень умный человек СКАЗАЛ:
“Я думаю, вам нужно будет опросить буфер обмена…”.
(я чуть со стула не упал)… это же ГЕНИАЛЬНО….. И ПРОСТО.
Вот моя “бодяга”, созданная по образу и подобию примера-образца как у того чувака с форума.
________________________________________________________________________________
import pyperclip
last_data = None
while True:
data = pyperclip.paste()
if data != last_data:
print(data) #вместо print, соответственно можно добавить требуемую функцию
last_data = data
________________________________________________________________________________
Она конечно “костыльная”, но в моём случае, простенькая и решает все проблемы с раскладкой…
ЕЩЁ раз всем спасибо за внимание и помощь…. авось эта “бодяга” кому то пригодится)))
P.S. Для того чтобы полностью закрыть вопрос - PEHDOM, если не сложно, ты не мог бы привести нормальный, правильный пример (не такой костыльный как у меня) одного из перечисленных тобою методов????
Просто интересно как он будет выглядеть)))))) и другим, таким как я (новичкам), будет отличный урок)))
Отредактировано Pes (Сен. 23, 2018 03:03:33)
Офлайн
мы не предлагали это решение в виду его очевидного говнокодства.
Офлайн
JOHN_16
мы не предлагали это решение в виду его очевидного говнокодства.
Офлайн
Pes
я его не знаю.
Тут должен быть сигнал/сообщение/событие о том что содержимое буфера обмена изменилось. Это вообще ОС специфичная вещь. Например в windows проще - там есть WinAPI и из него можно понять возможно ли это вообще. С линуксом все сложнее. В самом линуксе, например в ядре, нету буфера обмена в том смысле в котором вы его понимаете. Буфер обмена есть в различных средах рабочего стола. И В каждой возможно по своему реализован и/или имеет свои фичи. Например слышали про буферы обмена в котором можно много значений хранить?
В MacOS не знаю как.
Посему это не такой простой вопрос, и он не касается питона.
Вот PEHDOM дал вам абсолютно верное направление, регистрируете функцию, получаете сообщение, после которого считываете содержимое буфера обмена.
Если сами не можете реализовать это, ищите готовый модуль или снипет кода.
Офлайн
Pesну если в целом то както так:
PEHDOM, если не сложно, ты не мог бы привести нормальный, правильный пример (не такой костыльный как у меня) одного из перечисленных тобою методов
[code python][/code]
Офлайн
PesА вы можете рассказать, а нафига оно вам надо? 99% подобного рода задач проистекает от скудности знаний и попыток скреативить что-то полезное опираясь на ограниченный опыт и наивную постановку вопроса. Приведу пример, один человек выяснял, как можно получить цвет пиксела по заданным координатам. Знаете зачем? У него была задача определить, входит ли точка в заданный полигон, и он не придумал ничего умнее, чем заливать полигон цветом и потом определять цвет точки. Понятно, что задача решается совсем не так, а косвенная задача определения цвета пиксела возникла из дурацких предпосылок.
приведите, пожалуйста, качественный пример
Офлайн