Click here to Skip to main content
65,938 articles
CodeProject is changing. Read more.
Articles
(untagged)

The most useless plug-in for Visual Studio 2005 and Live Messenger

0.00/5 (No votes)
5 Feb 2008 1  
The most useless plug-in for Visual Studio 2005 and Live Messenger.

Introduction

Have you ever wanted to display your next secret project on your Live messenger so your friends can ask about it? Nothing is better than this useless add-in for Visual Studio 2005 that allows you to show "Now editing...." in your Live Messenger.

Using the code

Here are the important parts of this piece of code:

//Define the following in the class
private EnvDTE.WindowEvents winEvents;
//In the OnConnection function, do the following
// Retrieve the event objects from the automation model.
winEvents = (EnvDTE.WindowEvents)events.get_WindowEvents(null);
winEvents.WindowActivated += 
  new _dispWindowEvents_WindowActivatedEventHandler(this.WindowActivated); 
//In the OnDisconnection, make sure you clean up the event handler
winEvents.WindowActivated -= 
  new _dispWindowEvents_WindowActivatedEventHandler(this.WindowActivated);
//To use FindWindowExA and SendMessageA, 
//you have to import those functions from user32.dll
//Do the following in the class

[DllImport("user32", EntryPoint = "SendMessageA")] 
private static extern int SendMessage(int Hwnd, 
               int wMsg, int wParam, int lParam);

[DllImport("user32", EntryPoint = "FindWindowExA")] 
private static extern int FindWindowEx(int hWnd1, 
               int hWnd2, string lpsz1, string lpsz2);

//And Since we use a constant for WM_COPYDATA, we define
private const short WM_COPYDATA = 74;


//This is the actual function that sends message to MSN.
//The exact format for the string can be found in MSN API section of MSDN
private void SendMSNMessage(bool enable, string category, string message)
{
    string buffer = "\\0" + category + "\\0" + 
                   (enable ? "1" : "0") + 
                   "\\0{0}\\0" + message + "\\0\\0\\0\\0\0"; 
    int handle = 0; 
        data.dwData = 0x0547;
        data.lpData = VarPtr(buffer);
        data.cbData = buffer.Length * 2;
        handle = FindWindowEx(0, handle, "MsnMsgrUIManager", null);
        if (handle > 0)
          SendMessage(handle, WM_COPYDATA, 0, VarPtr(data));
}

//Finally the event handling function.
public void WindowActivated(EnvDTE.Window gotFocus,EnvDTE.Window lostFocus)
{
    SendMSNMessage(true, "Music","Coding in Visual Studio: " + 
                   gotFocus.Caption); 
}

While this article is short, so is the code, which is excellent for those interested in developing and extending VS2005. I did the code in 3 hours, including learning VS2005's add-in architecture; I'm sure you can do better.

For more details, checkout the Visual Studio 2005 SDK, which can be downloaded freely from Microsoft's website. Good luck and Enjoy!

Points of interest

There are a few things in this add-in you might be interested in:

  • How to send a window message in C#
  • How to communicate with MSN Messenger's API
  • How to write an add-in for Visual Studio 2005
  • How to handle events in Visual Studio 2005

History

  • Version 1.0 - Use for your own interests.

License

This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.

A list of licenses authors might use can be found here