A friend asked me to write a program that dials a telephone number and checks for the presence of a 1000 Hz tone. Any suggestions?

1000hz ? What he probably means the "Carrier" signal.

Use MSComm32 or a 3rd party comm control such as Comm32 and dial the other computer like this.

Comm1.Settings = "9600,n,8,1"
Comm1.RTSEnable = True
Comm1.DTREnable = True
Comm1.PortOpen = True
Comm1.Output = "ATDT 1234567890"
' Replace that with the number you wish to dial

The Comm control has a property called CDHolding

as soon as the other side picks up - the modem will generate a carrier (proabaly what you call the 1000hz signal) and set the CDHolding property to True

So, in theory, as soon as you sent the dial command you can go into a loop checking for a change in the Comm1.CDHolding property.