In one embodiment, a computer program blocks windows categorized as bad windows,
while allowing windows categorized as good windows to be displayed. The computer
program may categorize a window by consulting one or more lists. In one embodiment,
a list may be updated from time to time to optimize the computer program and prevent
program-obsolescence. Techniques for defeating a window-blocking mechanism are
also disclosed. In one embodiment, a computer program detects if a window is of
a type that offers a product to a user. If so, the computer program provides a
separate window containing information regarding the product. In one embodiment,
a computer program detects if a user has a need for the computer program. If so,
the user is informed of the efficacy of the computer program, which is then offered
to the user.