修改msn個人訊息
突然聽到有人想要做個功能,
就是要在執行他的程式的時候,
msn上的個人訊息要改為”我現在正在使用 xxx ”或是”我現在正在玩 xxx ”
msn本身的功能就已經有個[顯示我正在收聽的歌曲資訊]
而現在很多音樂播放軟體也都”支援”msn這樣的功能.
所以稍微google一下,果然有一堆相關的網頁.
大致上的做法如下(使用C#).
下面這片段直接貼到你的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);
private const short WM_COPYDATA = 74;
public struct COPYDATASTRUCT
{
public int dwData;
public int cbData;
public int lpData;
}public COPYDATASTRUCT data;
public int VarPtr(object e)
{
GCHandle GC = GCHandle.Alloc(e, GCHandleType.Pinned);
int gc = GC.AddrOfPinnedObject().ToInt32();
GC.Free();
return gc;
}
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));
}
但要記得開頭的using要加
using System.Runtime.InteropServices;
而在你的程式中要使用的話就是呼叫SendMSNMessage的函數.如下:
SendMSNMessage(true,this.comboBox1.Text, this.textBox1.Text);
第一個參數 : 設定msn是否要顯示該段訊息,或是只顯示msn中的設定訊息.
第二個參數 : 顯示訊息的圖片,目前似乎只有三個(Office,Games,Music),顯示歌曲資訊就是使用Music
例圖 :
第三個參數 : 要顯示的訊息.
範例下載 :
原始碼 : MsnPersonalMsgChange-src.zip
執行檔 : MsnPersonalMsgChange-bin.zip
參考網址: