65.9K
CodeProject 正在变化。 阅读更多。
Home

MSN 浮动个人消息

starIconstarIcon
emptyStarIcon
starIcon
emptyStarIconemptyStarIcon

2.90/5 (10投票s)

2005 年 8 月 31 日

CPOL
viewsIcon

88863

downloadIcon

1282

在 MSN Messenger 上显示浮动文本消息作为个人消息。

Sample Image - MSNFloatingText.jpg

引言

此应用程序提供了向 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 日:初始发布
© . All rights reserved.