Added a new module called CoCallCancellationHandler?. This is code that can start and stop COM call cancellations. For instance if there is a COM call you know is possibly going to block for ever, make sure that CoCallCancellationHandler? has been started, and then if the call takes too long it will automatically be killed off. Once you are finished with the call, call CoCallCancellationHandler?.stop. This is managed by turning on call cancellation in OLE, then registering a generator in NVDA's core that updates an event as it executes on about every second cycle, and then creating a monitor thread which watches this cycle event and if it ever stops for more than a particular amount of time, it cancels any current COM calls. So far NVDA only uses CoCallCancellationHandler? for threee specific situations: to fix a freeze in Lotus Symphony when moving from the document to the menu bar, in Windows XP Add/Remove programs, when launching an uninstaller, and in Spybot Search and Destroy, where NVDA would freeze when it opens. All three of these freezes are fixed by this new code, though more testing must be done before we could consider using CoCallCancellationHandler? in a much more general way.