windows - Kan afbryde en proces uden at nulstille klippebordskæden forårsager problemer?

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg har fået et program, der kalder SetClipboardViewer ved opstart for at tilmelde dig ændringer til underretninger om udklipsholder. Ved afbrydelsestid vil det ringe til ChangeClipboardChain for at fjerne sig fra kæden korrekt. [1] [2]


Dette er alt godt, så længe programmet kører normalt. Men det har jeg undret mig over, hvad sker der, hvis programmet bliver afbrudt, enten ved at jeg dræber det under debuggeren, ved et nedbrud eller ved at brugeren dræber processen, fordi noget gik galt? Derefter sker oprydning aldrig. problemer for systemet på en eller anden måde?


Specielt ved jeg, at Windows kan fjerne min seer uden problemer, fordi det er et håndtag og Windows kan rydde op alle håndtag, når en proces ophører, men vil det medføre den næste værdi nedstrøms i kæden, som jeg havde en henvisning til, for at få tabt på en eller anden måde?

Bedste reference


Ja, hvis du ikke fjerner dig selv fra kæden, bryder kæden. Deadly sin # 2. Læs hele listen for at være sikker på at du følger alle reglerne.
http://www.clipboardextender.com/developing-clipboard-aware-programs-for-windows/6
Mange apps lider af dette, herunder Delphi IDE. det vil sige, hvis Delphi styrter på bestemte måder, vil den dræbe klippebordskæden (D2005 alligevel). [3]


Overvej at bruge Vista stil notifikation på Vista/Windows7.