Содержимое буфера обмена автоматически стирается

9

Мой буфер обмена автоматически стирается время от времени.

Например:
я копирую некоторый текст, используя Ctrl + C, а затем вставляю его куда-нибудь. И когда я пытаюсь вставить его снова, ничего не происходит. Мне нужно скопировать это еще раз.

Это происходит нерегулярно, иногда я могу вставить текст много раз, иногда даже не один раз.

Я разработчик, поэтому я очень часто копирую и вставляю (...), но это действительно раздражает.

Как я могу узнать, какое программное обеспечение это делает? Есть ли какой-нибудь инструмент для мониторинга, КАКОЙ ПРОЦЕСС УДАЛЕН КЛИПАТОР? Или, если у вас возникла проблема с каким-либо программным обеспечением, которое вы использовали, какое это было?

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

Обновить

Сегодня я подтвердил, что неправильно работающее приложение есть Visual C# 2010, и проблема появляется только внутри этого приложения. Я пытался использовать инструменты мониторинга буфера обмена, как предложил JRobert . Кажется, что текст правильно копируется в clipboard(чтобы его clipboard history managerможно было записать), а затем Visual C# 2010стирает содержимое буфера обмена по какой-то причине, что приводит к «пустому буферу обмена».

Так что спасибо всем, теперь я уверен, какое приложение вызывает проблемы, и даже нашел Microsoft Connectсредство отслеживания ошибок по этому поводу:
https://connect.microsoft.com/VisualStudio/feedback/details/554039/visual-studio-2010-clipboard -copy-and-cut-not-work? wa = wsignin1.0
А вот дополнительная информация:
http://alpascual.com/post/copy-and-paste-problems-in-visual-studio-2010 .aspx

Теперь я могу просто подождать и помолиться за исправление ошибки Microsoft.

Пая
источник
Возможно, захотите проверить community.winsupersite.com/blogs/paul/archive/2010/05/06/…
Unfundednut
Я прочитал статью и все обсуждение под ней, но никто не сталкивался с такой же проблемой, как я. :-(
Пайя
1
Вы случайно не используете KeePass?
BloodPhilia
Нет, нет, но я установил его в прошлом и удалил ...
Paya
почему вы не делаете это простым способом? Начните с закрытия приложений для настольных ПК, которые вы добавили до того, как

Ответы:

2

Проверьте https://stackoverflow.com/questions/621577/clipboard-event-c

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

Тамара Вийсман
источник
Да, я уже знаю, что можно отслеживать изменения в буфере обмена, но мне нужно отследить это до приложения, которое внесло изменения. И проблема повторяется не периодически, а случайно. Поэтому было бы очень сложно отследить приложение, исключив процессы.
Пайя
О, я только что получил идею, которая может помочь вам в вашем решении. Вы можете попытаться перехватить вызов API ( codeproject.com/kb/system/hooksys.aspx ) и обнаружить его таким образом ...
Тамара Вийсман
Да, эта идея также приходила мне в голову, но создать такую ​​программу немного сложно. Я просто надеюсь, что есть и другое решение.
Пайя
3

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

JRobert
источник
Это происходит, даже если я не предпринимаю никаких безобидных действий ... Например, я копирую что-то в буфер обмена, а затем начинаю нажимать Ctrl + V пять раз. Он вставляется 3 раза, а затем внезапно стирает содержимое буфера обмена, поэтому следующие 2 ctrl + v ничего не делают. И я просто делаю Ctrl + V, больше ничего. Так что я не знаю, как мне поможет мониторинг смены буфера обмена.
Пайя
И ничего связанного с пользователем не произошло в тот момент? Это явление должно быть связано с каким-то процессом, который выполняется или не выполняется в данный момент времени, если он не может быть надежно повторен. Мое единственное другое предложение - получить снимок (например, с Process Explorer) текущих запущенных процессов, сделанный в моменты, когда вы можете воспроизвести явление, а иногда - когда вы не можете. Затем сравните два снимка для их различий.
JRobert
Ну, это происходит совершенно случайно, ничего не связано с пользователем. Тем не менее, я подозреваю, что Visual C # 2010 вызывает проблему, так как я ее погуглил, и похоже, что другие испытывают похожие (не одинаковые) проблемы с буфером обмена. Будем расследовать дальше.
Пайя
2

Буфер обмена в Windows никогда не работал очень хорошо. Давным-давно я отказался от этого и начал использовать бесплатные замены буфера обмена. Мой последний фаворит - ClipX ( http://www.bluemars.org/clipx/ ). Мне просто надоело вбивать себе голову в странности и ограничения буфера обмена Windows (самое худшее, что вы можете хранить только один клип за раз).

Кроме того, вы должны знать, что Microsoft сделала некоторые очень странные вещи с буфером обмена Windows в некоторых версиях Microsoft Office. Я не могу вспомнить, какие версии Office были худшими нарушителями в этом отношении, но я знаю, что после установки одной из них операция с буфером обмена была серьезно испорчена, пока я не отключил соответствующие функции. Насколько я помню, эти проблемы возникали даже тогда, когда не было запущено ни одного приложения Office. В любом случае, если вы не установили Office на данный компьютер, очевидно, вы должны это игнорировать.

boot13
источник
Я не установил Office, так что этого не должно быть. Кстати, ClipX - менеджер истории буфера обмена, а не замена буфера обмена. Но кажется, что Visual C # 2010 вызывает странность в буфере обмена, я пытаюсь это подтвердить, но в настоящее время я не могу воспроизвести проблему. Будем продолжать пытаться.
Пайя
Ты расщепляешь волосы. ClipX и (другие подобные ему инструменты) подключаются к буферу обмена Windows и эффективно устраняют все его ограничения, в том числе то странное поведение, о котором вы изначально писали. Зачем биться головой с дрянным буфером обмена по умолчанию, если вы можете обойти это?
boot13
"пока я не отключил соответствующие функции" Какие? Как вы их отключили? @Paya
falsePockets
@falsePockets Может быть, вы должны спросить boot13? Он написал пост. Во всяком случае, я использую Visual Studio 2017 сейчас, и у меня больше нет этой проблемы.
Пайя
@falsePockets: это работает в Word 2007 наверняка, другие версии, вероятно, также. Перейдите на вкладку «Главная», нажмите маленькую стрелку справа от того, где написано «Буфер обмена», чуть ниже «Вставить». Нажмите кнопку «Параметры» внизу слева. Отмените выбор некоторых или всех этих параметров.
boot13
2

Правильный способ сделать это, чтобы контролировать вызовы API, операции с буфером обмена являются функцией модуля user32.dll

некоторые из них :

user32.dll!CloseClipboard
user32.dll!SetClipboardData
user32.dll!EmptyClipboard
user32.dll!GetClipboardData
...

некоторые инструменты, такие как Spy Studio или API Monitor, позволяют отслеживать эти звонки и сообщать, кто их совершил.

удачи !


источник
Spy Studio не имеет 64-битной поддержки, но ... Но, похоже, API Monitor сделает это, проверим это позже ... +1 Выглядит потрясающе! Уже работали с XPerf, но это кажется более удобным, так как он может отображать параметры и другие вещи. :-)
Тамара Вийсман
Новая версия API Monitor хороша, единственным недостатком является то, что некоторые вещи не очень эффективны для пользователя, такие как выбор нескольких процессов или фильтров ... Я сообщу об этом на днях. :-)
Тамара Вийсман
да, они только что выпустили V2 :) выглядит многообещающе. подскажите, если это даст какие-то результаты, и есть много других, но большинство из них позволяют подключать только один процесс (не очень удобно для вашего случая)