Skype remote callerID and control

Skype is a great tool for voice communication.   It works in nearly all networking environments, has both outgoing and incoming capabilities with the PSTN and has support for multiparty voice conversations.  The latter is one of Skype’s biggest assets which have allowed it to become the next iParty or Teamspeak.
The application has one major flaw however; it requires a ton of CPU power for its functionality to work properly.  Since I started to use Vista full time on my primary PC, Skype became virtually useless as during a call — the PC became incredibly slow, my contacts complained (more so than normally) about not being able to understand me and the application would bring Vista’s Aero interface and my other applications to a halt.
Since my poor PC couldn’t handle it, my solution was to put Skype on my server, which sits directly next to this PC.  However, since I don’t use the server much to that the point that I would see incoming calls, it became used only for outgoing calls and the rest of the time remained dormant. 
So since Skype has a full API available to completely control it, I looked around for a Skype Remote Control application.  Unfortunately, I didn’t really find anything that did what I was looking for.  So, I decided to make my own.
Initially I was going to use this as basis to teach myself WCF in the .NET Framework 3.0.  But after much trying, I just couldn’t seem to grasp the necessary concepts quickly enough to use in this project.  There doesn’t seem to be much good information out there on WCF yet – most of it’s in blog form, and a lot of it relates to when WCF was in beta and no longer works in the final RTM version.  The .NET 3.0 website tells me to buy one the MS Press books – I’ll save my $80 for something else, thanks.   WCF put aside, since this is a pretty simple project I just decided to use the standard TcpListener/TcpClient classes as I’ve used them before and can do the job lightweight without fuss. 
The design is simple, a server application running on the Skype PC and a client application running on the other PC.  When a call comes in, the server connects to the client, sends the necessary caller ID information and then the call can be either accepted or declined by the client.  This is the same design as YAC (Yet Another Caller ID program), which is a nice small application I use to alert the PCs on my network for landline calls.  The primarily drawback to this design is that the client can’t remotely make a call or stop a current call, so I may go back and make proper remote application sometime in the future.
The application lives in the notification area and there’s no additional UI beyond a Settings form in both server and client to configure the port and client hostname.  The call notification itself is just a MessageBox, as I wanted something simple that would appear quickly since a normal WinForm certainly isn’t very quick to display, especially when Windows is under load.
I only did this in about an hour and a half, so keep in mind that the code is largely undocumented and all the code is in the WinForm class.  Additionally, you’ll need the Skype4COM library installed. 
SkypeServer (to run on the Server computer)
SkypeClient (to run on the Client computer)

Posted on January 14, 2007, in Computers and Internet. Bookmark the permalink. 3 Comments.

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: