As soon as they begin, I interrupt to tell them "I never buy anything over the telephone. No, I won't send you my mailing address. Please take me off your calling list. Have a nice day. Goodbye." And I hang up. It took some time, but I noticed after the first three months of this that I was getting fewer calls. If you're known as a useless call, they do eventually stop wasting their time -- and yours.
Another thing is to come home and fire up the computer to get online during the dinner hour -- if it interferes with your 'phone lines, that is. Nothing like two or three hours of a busy signal to discourge them, at least when you REALLY don't want to deal with that stuff.