Уведомления

Группа в Telegram: присоединиться

#1 Сен. 16, 2018 19:20:59

Pes
Зарегистрирован: 2018-06-23
Сообщения: 11
Репутация: +  0  -
Профиль   Отправить e-mail  

Как "отследить" работу буфера обмена ???

Привет Друзья!

У меня вопрос.

Как можно отследить срабатывание буфера обмена?
Ну то есть… если я скопировал текст, то как можно “отловить” этот процесс…

Причем, понятно, что через keyboard или piautogui можно отследить по клавишам…но беда в том, что у меня 4 активных раскладки клавиатуры (языка ввода), на английской раскладке отслеживание клавиш сработает корректно, а вот если другой язык ввода задействован, то хана, ошибка возникает…
Да и геморно этот процесс через клавиши отлавливать…((((( код выглядит “костыльно”((((

Вероятно, можно как-то отследить активность самого буфера через какой-то модуль…

ВОПРОС: Через какой модуль можно отследить работу буфера ????

please help)))

Офлайн

#2 Сен. 16, 2018 19:31:43

BM21
Зарегистрирован: 2018-09-15
Сообщения: 29
Репутация: +  0  -
Профиль   Отправить e-mail  

Как "отследить" работу буфера обмена ???

Pes
Привет Друзья!У меня вопрос. Как можно отследить срабатывание буфера обмена? Ну то есть… если я скопировал текст, то как можно “отловить” этот процесс…Причем, понятно, что через keyboard или piautogui можно отследить по клавишам…но беда в том, что у меня 4 активных раскладки клавиатуры (языка ввода), на английской раскладке отслеживание клавиш сработает корректно, а вот если другой язык ввода задействован, то хана, ошибка возникает…Да и геморно этот процесс через клавиши отлавливать…((((( код выглядит “костыльно”((((Вероятно, можно как-то отследить активность самого буфера через какой-то модуль…ВОПРОС: Через какой модуль можно отследить работу буфера ????please help)))
Если windows то через winapi. Но опять же в том фрэймверке который вы используете для GUI должен был обработчик соответсвующего события.

Офлайн

#3 Сен. 17, 2018 18:49:24

Pes
Зарегистрирован: 2018-06-23
Сообщения: 11
Репутация: +  0  -
Профиль   Отправить e-mail  

Как "отследить" работу буфера обмена ???

Спасибо!…да, Windows)

Полазил, поковырял, что-то не могу найти чего-то вразумительного и ясного (((

Вопрос покоя не даёт… )))

У кого-нибудь есть ещё светлые мысли???


Офлайн

#4 Сен. 18, 2018 12:08:11

PEHDOM
Зарегистрирован: 2016-11-28
Сообщения: 950
Репутация: +  164  -
Профиль   Отправить e-mail  

Как "отследить" работу буфера обмена ???

Pes
Полазил, поковырял, что-то не могу найти чего-то вразумительного и ясного (((
Это где же вы лазили? первые ссылки в гугле по запросу “winapi clipboard”
https://docs.microsoft.com/ru-ru/windows/desktop/dataxchg/using-the-clipboard
https://docs.microsoft.com/en-us/windows/desktop/dataxchg/clipboard-functions

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.
каким из этих трех способов пользоваться решать вам..
если в английским проблема гуглпереводчик в помощ.

Офлайн

#5 Сен. 22, 2018 21:51:47

Pes
Зарегистрирован: 2018-06-23
Сообщения: 11
Репутация: +  0  -
Профиль   Отправить e-mail  

Как "отследить" работу буфера обмена ???

оххх)) тяжко мне это всё. С английским то беда у меня(((
+ не забывайте про мои раскладки…

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)

Офлайн

#6 Сен. 22, 2018 23:26:32

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3007
Репутация: +  210  -
Профиль   Отправить e-mail  

Как "отследить" работу буфера обмена ???

мы не предлагали это решение в виду его очевидного говнокодства.



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

#7 Сен. 23, 2018 02:59:27

Pes
Зарегистрирован: 2018-06-23
Сообщения: 11
Репутация: +  0  -
Профиль   Отправить e-mail  

Как "отследить" работу буфера обмена ???

JOHN_16
мы не предлагали это решение в виду его очевидного говнокодства.


приведите, пожалуйста, качественный пример

Офлайн

#8 Сен. 23, 2018 11:55:13

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3007
Репутация: +  210  -
Профиль   Отправить e-mail  

Как "отследить" работу буфера обмена ???

Pes
я его не знаю.
Тут должен быть сигнал/сообщение/событие о том что содержимое буфера обмена изменилось. Это вообще ОС специфичная вещь. Например в windows проще - там есть WinAPI и из него можно понять возможно ли это вообще. С линуксом все сложнее. В самом линуксе, например в ядре, нету буфера обмена в том смысле в котором вы его понимаете. Буфер обмена есть в различных средах рабочего стола. И В каждой возможно по своему реализован и/или имеет свои фичи. Например слышали про буферы обмена в котором можно много значений хранить?
В MacOS не знаю как.
Посему это не такой простой вопрос, и он не касается питона.

Вот PEHDOM дал вам абсолютно верное направление, регистрируете функцию, получаете сообщение, после которого считываете содержимое буфера обмена.
Если сами не можете реализовать это, ищите готовый модуль или снипет кода.



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

#9 Сен. 23, 2018 15:06:06

PEHDOM
Зарегистрирован: 2016-11-28
Сообщения: 950
Репутация: +  164  -
Профиль   Отправить e-mail  

Как "отследить" работу буфера обмена ???

Pes
PEHDOM, если не сложно, ты не мог бы привести нормальный, правильный пример (не такой костыльный как у меня) одного из перечисленных тобою методов
ну если в целом то както так:
https://github.com/jhakonen/combileike/blob/master/clipboard_win32.py
Хотя там много лишнего, думаю переделать под свои нужды не составит труда.

Офлайн

#10 Сен. 24, 2018 09:16:28

Papa_Svin
Зарегистрирован: 2018-09-17
Сообщения: 138
Репутация: +  1  -
Профиль   Отправить e-mail  

Как "отследить" работу буфера обмена ???

Pes
приведите, пожалуйста, качественный пример
А вы можете рассказать, а нафига оно вам надо? 99% подобного рода задач проистекает от скудности знаний и попыток скреативить что-то полезное опираясь на ограниченный опыт и наивную постановку вопроса. Приведу пример, один человек выяснял, как можно получить цвет пиксела по заданным координатам. Знаете зачем? У него была задача определить, входит ли точка в заданный полигон, и он не придумал ничего умнее, чем заливать полигон цветом и потом определять цвет точки. Понятно, что задача решается совсем не так, а косвенная задача определения цвета пиксела возникла из дурацких предпосылок.

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version