c# ловят изменения буфера обмена, работа привычки если форма, минимизированная к лотку

у меня есть проблема с помощью "Кода Событий Буфера обмена выгоды", найденного на этой ссылке:

Событие Clipboard C#

код работает отлично, только если форма остается на переднем плане, не минимизированном к лотку, НО: если Вы добавляете notifyicon и минимизируете форму к лотку и поворачиваете showintaskbar ко лжи (так, чтобы у Вас только был значок в лотке), привычка программы ловят любые изменения буфера обмена больше..., даже если Вы максимизируете форму назад, это работа привычки, снова... необходимо перезапустить программу..

любая идея о том, как решить эту проблему!? как может я ловить изменения буфера обмена, даже если форма минимизирована в лоток!?

любая справка действительно ценится...

Спасибо

6
задан Community 23 May 2017 в 10:32
поделиться

2 ответа

Он должен работать, если он свернут - правда, свернут или скрыт. Если ваша реализация «свернутого» вызывает уничтожение окна, то этот дескриптор недействителен. И цепочка буфера обмена теперь разорвана из-за того, что слушало события буфера обмена ниже по потоку ...

Добавьте туда некоторый отладочный код, чтобы отобразить this.Handle как строку (например: «123456»). Поместите вызов SetClipboardViewer в событие щелчка в форме. Щелкните по нему, посмотрите номер. Свернуть, восстановить. Щелкните еще раз. У тебя такой же номер? вам следует. Если нет, то в этом проблема. События буфера обмена ДОЛЖНЫ передаваться в окно, которое остается. Это может быть скрытое окно на заднем плане.

- Крис

1
ответ дан 17 December 2019 в 20:30
поделиться

В любом случае, у вас может быть другая скрытая форма и использовать ее для перехвата сообщений Windows. Никогда не закрывайте / не создавайте повторно это окно. Он открывается при запуске, остается открытым, но невидимым. Это сработает.

Крис

1
ответ дан 17 December 2019 в 20:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: