我有一个调用 SetClipboardViewer 的程序在启动时注册剪贴板更改通知。在关机时,它会调用 ChangeClipboardChain正确地从链中删除自己。
只要程序正常运行,一切都很好。但这让我想知道,如果程序被中止,会发生什么情况,要么是我在调试器下杀死它,要么是崩溃,要么是用户因为出错而杀死了进程?然后清理永远不会发生。这会以某种方式给系统带来麻烦吗?
具体来说,我知道 Windows 可以毫不费力地删除我的查看器,因为它是一个句柄,并且 Windows 可以在进程终止时清理所有句柄,但这会导致链下游的下一个值,我持有一个引用,以某种方式迷路?
最佳答案
是的,未能将自己从链条中移除将会破坏链条。死罪#2。请阅读整个列表以确保您遵守所有规则。 http://www.clipboardextender.com/developing-clipboard-aware-programs-for-windows/6 许多应用程序都受此影响,包括 Delphi IDE。也就是说,如果 Delphi 以某种方式崩溃,它会杀死剪贴板链(无论如何是 D2005)。
考虑在 Vista/Windows7 上使用 Vista 风格的通知。
关于windows - 在不重置剪贴板链的情况下中止进程会导致麻烦吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5709311/