Может ли прерывание процесса без сброса цепи буфера обмена вызвать проблемы? - PullRequest
1 голос
/ 19 апреля 2011

У меня есть программа, которая вызывает SetClipboardViewer при запуске, чтобы зарегистрироваться для уведомлений об изменениях буфера обмена. Во время выключения он вызовет ChangeClipboardChain , чтобы правильно удалить себя из цепочки.

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

В частности, я знаю, что Windows может без проблем удалить мой просмотрщик, потому что это дескриптор, и Windows может очистить все дескрипторы после завершения процесса, но это вызовет следующее значение в цепочке, на которое я держал ссылку, как-то заблудиться?

1 Ответ

4 голосов
/ 03 мая 2011

Да, если вы не удалите себя из цепи, она сломается.Смертельный грех # 2.Пожалуйста, прочитайте весь список, чтобы убедиться, что вы следуете всем правилам.http://www.clipboardextender.com/developing-clipboard-aware-programs-for-windows/6 От этого страдают многие приложения, в том числе Delphi IDE.т. е. если Delphi выйдет из строя определенным образом, он уничтожит цепочку буфера обмена (D2005 в любом случае).

Рассмотрите возможность использования уведомлений в стиле Vista в Vista / Windows7.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...