当前位置:  开发笔记 > 编程语言 > 正文

如何显示超过63个字符的系统托盘工具提示?

如何解决《如何显示超过63个字符的系统托盘工具提示?》经验,为你挑选了2个好方法。

如何显示超过63个字符的系统托盘工具提示?NotifyIcon.Text有63个字符限制,但我已经看到VNC服务器有更长的工具提示.

我该怎么做VNC服务器呢?



1> Hans Passant..:

实际上,它是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 });
      }
    }



2> bk1e..:

从Win32 NOTIFYICONDATA结构上的MSDN文档:

szTip

以null结尾的字符串,用于指定标准ToolTip的文本.它最多可包含64个字符,包括终止空字符.

对于Windows 2000(Shell32.dll版本5.0)及更高版本,szTip最多可包含128个字符,包括终止空字符.

看起来Windows窗体库支持这里最低的公分母.

推荐阅读
N个小灰流_701
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有