Click here to Skip to main content
Click here to Skip to main content

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

, 5 Feb 2008 LGPL3
Rate this:
Please Sign up or sign in to vote.
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, along with any associated source code and files, is licensed under The GNU Lesser General Public License (LGPLv3)

Share

About the Author

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

Comments and Discussions

 
QuestionHow does this work?? PinmemberMember 259500831-Aug-09 1:49 
GeneralNice example, but project is tagged incorrectly PinmemberC. Bates6-Jul-09 5:09 
GeneralAwesome PinmemberBoinst6-Feb-08 15:31 
This looks like fun. Laugh | :laugh:
 
www.streetgeek.com.au

GeneralRe: Awesome PinmemberLegoMindstorms12-Feb-08 0:35 
GeneralRe: Awesome Pinmemberpankkk2-Mar-08 22:08 

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

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

| Advertise | Privacy | Mobile
Web01 | 2.8.141022.1 | Last Updated 6 Feb 2008
Article Copyright 2008 by tsxy
Everything else Copyright © CodeProject, 1999-2014
Terms of Service
Layout: fixed | fluid