One of the things that you can do avoid some programs from becoming unstable is to set a low level hook timeout. There are a few programs which use this low level hook timeout. Setting a low value (in milliseconds) means that if the hooked program does not respond within timeout period, one that has set the hook would not become unstable or go in infinite wait but would kill itself saving windows resources and improving performance. Open Registry by going to START-RUN and entering REGEDIT and Navigate to

[HKEY_CURRENT USER\\Control Panel\\Desktop]

and look for "LowLevelHooksTimeout" in the right pane. Now set it to a small number in milliseconds for example a value of 3500 would mean 3.5 seconds.