Yet Another Caller ID Program

.NET edition


Copyright © 2007 Michael Coyle, Blue Toque Software


  • Windows XP with .NET 2.0 (available through windows update, or as a download from Microsoft)
  • Modem that supports Caller ID
  • Caller ID phone service from your phone company (this varies by region)
  • 3MB Disk Space, 512 MB RAM



YAC.NET is free, and is covered by the GNU GPL Version 2.0. For more information on what this license means, click the icon on the right.


Phone icons: Sebastian Kraft

Other Icons: Crystal SVG by Everaldo Coelho

Inspired by:
YAC  by Jensen Harris, and

    MCE-YAC by David Ethan Zoller

Change Log

November 2007:

    • changes to support upgrading versions and porting the call log
    • added log rotation, and reading various older logs
    • added exporting to a CSV file from a log
    • imports old logs and settings on upgrade

July 2007:

    • sort call log by date, ascending and descending
    • Known Bugs:
      • editing the number in the phone book can be problematic, and can cause a program crash
      • need to work out the formatting for phone numbers.
    • Planned Features:
      • export call log to csv for import to spreadsheet programs.
      • import/export the phone book to CSV
      • hot link to do reverse lookup on numbers that have no caller ID
      • tap into speech API to say numbers and/or names
      • automatic update
      • on upgrade, import old call log and phone book and settings
      • sort call log by name
      • alert on certain phone numbers

March 2007:

    • Initial release


YAC.NET was written over a period of 7 days in April 2007, however it is entirely inspired by YAC (Yet Another Caller ID Program) by Jensen Harris. YAC is a great program, very simple and effective. It extracts Caller ID information from a phone call, and sends Caller ID events to other computers on a network. If those other computer have a listener installed (Such as YAC or MCE-YAC by David Ethan Zoller), then that machine will display the Caller ID information to the user.

So, out of the sheer joy of programming I decided to write my own version. The result was quite a bit of fun perfecting what I believe is a useful program, and in the spirit of YAC and open source software I decided to release the result.

YAC.NET has most of the features of YAC, but the approach I use is slightly different. While YAC makes use of the TAPI SDK, YAC.NET reads directly from the COM port that the modem is attached to. This means that you have to go through the small effort of configuring the modem with an initialization string to turn on detection of the Caller ID.

In addition, I replicated the call log feature to record a log of all calls received, and the phone book feature to show you friendly names for the phone numbers that calls are made from. I added the ability to take a call log entry and add it to the phone book, and to print the call log (although the printing is fairly primitive). YAC.NET can also run as a listener, which means it just waits for an event to be sent to it from a YAC.NET, or YAC instance configured as a server. YAC.NET uses the same message format as YAC, so they are interchangeable as servers or listeners.

Finally I put in a new feature: the ability to run the program as a Windows service. This means that you when you install the program, configure it, and set it to run as a service it will start automatically every time windows boots. You do not have to log in to that computer, and you do not have to remember to run YAC.NET, it just runs in the background, silently monitoring and logging calls and sending Caller ID events to configured listeners.

The idea here is that you install YAC.NET on one computer and run it as a service. The Caller ID events are sent to other machines on your network, each of which can have it’s own call log, and phone book (if you like). For your Windows Media Center, use MCE-YAC (so when I’m watching TV I can see who is calling). You can also install listeners on other computers, so you get notified whenever a call comes in.