COM+CEOQACOMWindows VistaDBAVisual Studio .NET 2003Windows 2003.NET 1.1Visual Studio 2005Windows 2000ArchitectWindows XPIntermediateDevVisual StudioWindows.NETC#
MSN 浮动个人消息






2.90/5 (10投票s)
在 MSN Messenger 上显示浮动文本消息作为个人消息。

引言
此应用程序提供了向 MSN Messenger 的个性消息中编写浮动文本消息的功能。
该应用程序具有速度、方向和图标选项。 用户可以将浮动速度设置为毫秒为单位的值。 此外,用户可以选择移动方向,从左到右或从右到左。 有三个图标选项:Office、Games 和 Music。 选择 Music 图标选项时,文本将变为文本链接。
在创建浮动文本消息期间,必须打开该应用程序。 当应用程序被最小化时,它会显示为托盘图标。 它不会出现在任务栏上。
MSN 对象声明
[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;
实现与 MSN Messenger 交互的函数
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));
}
历史
- 2005 年 8 月 31 日:初始发布