如何显示超过63个字符的系统托盘工具提示?NotifyIcon.Text有63个字符限制,但我已经看到VNC服务器有更长的工具提示.
我该怎么做VNC服务器呢?
实际上,它是Text属性的属性设置器中的错误.Windows窗体中的NOTIFYICONDATA的P/Invoke声明使用128个字符限制.你可以用反射破解它:
using System; using System.Windows.Forms; using System.Reflection; public class Fixes { public static void SetNotifyIconText(NotifyIcon ni, string text) { if (text.Length >= 128) throw new ArgumentOutOfRangeException("Text limited to 127 characters"); Type t = typeof(NotifyIcon); BindingFlags hidden = BindingFlags.NonPublic | BindingFlags.Instance; t.GetField("text", hidden).SetValue(ni, text); if ((bool)t.GetField("added", hidden).GetValue(ni)) t.GetMethod("UpdateIcon", hidden).Invoke(ni, new object[] { true }); } }
从Win32 NOTIFYICONDATA结构上的MSDN文档:
szTip
以null结尾的字符串,用于指定标准ToolTip的文本.它最多可包含64个字符,包括终止空字符.
对于Windows 2000(Shell32.dll版本5.0)及更高版本,szTip最多可包含128个字符,包括终止空字符.
看起来Windows窗体库支持这里最低的公分母.