
mediaSync is a program I wrote to let multiple people sync up a video they're watching so that pauses/seeks/plays are synchronized across all the clients. It was mostly the result of lots of "Ok, let's start when when the windows clock hits 30 seconds.." and "I need a drink, I'm paused at um, 15:30".
You might notice that while it looks like it was written with multiple player type plugins in mind, it only works with Media Player Classic, and only when the Web Interface is enabled. This is because it was the original program I needed to control and had hoped I would "discover" ways to interface with other players when the time arose. Unfortunately, no other player has a readily available interface to query player state & position in the current title and to alternately seek to a custom position and play/pause/stop. I could probably write a Winamp plugin to do this, but there has never been a need so it's remained an mplayerc only application.
First off, you need Media Player Classic. Version is irrelevant as long as it has the Web Interface feature, which all the newer ones do. I believe the Web Interface is enabled by default, but if it isn't, turning it on is simple.
Enabling the Web Interface: 
mediaSync defaults to port 13579 for talking to Media Player Classic, but you are free to change it if you like. Make sure to keep "Allow access from localhost only" checked as the mediaSync server communicates with other mediaSync clients and not with the client's Media Player Classic Web Interface.
Once you have the Web Interface running, you can fire up mediaSync and get everything going.
If you don't have a friend or another computer available to test with, you can still run another instance of mediaSync as a client on the same computer as the server. Run mediaSync wherever you want to test the client, choose the "Client" radio button (default), set the port to whatever the server is listening on, and hit "Join Server". The client will retry connecting as long as it is not connected, so you do not have to worry about starting / stopping the client over and over if no server is up.
Once you connect, the client should have "Server OK ping xx.xx ms" in it's status bar. The server will have "Server: x clients (y ready)" in it's status bar, where x is the number of clients connected, and y is the number of clients who have the same media file open as the server. If the server cannot contact it's player, 0 clients will be assumed ready. If all clients are not ready, everybody will be forced to pause. Once all clients are ready, anyone may then change the player state (to Play, Pause, or Stopped), or seek to a position in the video, and their changes will propogate to the rest of the clients and the server player itself. Changes are on a last-changed basis, so if two clients attempt to seek to different positions at the same time, the client that sends it's update to the server last will be the change that goes through.
A server with a client connected:
That's about it! Once you get it working, there really isn't much to using it. Of course there are extraneous features that could be added such as primitive chatting so you don't need to coordinate what to watch in a seperate chat program, or an extended client listing showing the status of each client and the ability to toggle whether that client can control the player, but in it's current state it works just fine for my needs.
Note: Ignore the useless cross-platform code in the source. I cannibalized lots of stuff from my never-finished BitTorrent client bloom and didn't bother to clean out the non-Win32 code. I think cross-platforming was another pre-development idea like multiple player plugins that I never really intended to implement, especially since I've never done any GUI programming on another OS and am not very good at it on Win32.
The EXE should run on Win98 and up, but I can't admit to having tested that notion. There also aren't any versions because it's not really a work in progress.