Click here to Skip to main content
15,881,709 members
Articles / Programming Languages / C
Article

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

Rate me:
Please Sign up or sign in to vote.
4.45/5 (8 votes)
5 Feb 2008LGPL3 38.2K   188   15   5
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:

C#
//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, along with any associated source code and files, is licensed under The GNU Lesser General Public License (LGPLv3)


Written By
Web Developer
Canada Canada
I am a computer engineering student in University of Toronto, Canada

Comments and Discussions

 
QuestionHow does this work?? Pin
Clatonhendricks31-Aug-09 1:49
Clatonhendricks31-Aug-09 1:49 
GeneralNice example, but project is tagged incorrectly Pin
C. Bates6-Jul-09 5:09
C. Bates6-Jul-09 5:09 
GeneralAwesome Pin
Boinst6-Feb-08 15:31
Boinst6-Feb-08 15:31 
GeneralRe: Awesome Pin
LegoMindstorms12-Feb-08 0:35
LegoMindstorms12-Feb-08 0:35 
GeneralRe: Awesome Pin
pankkk2-Mar-08 22:08
pankkk2-Mar-08 22:08 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.