支持XP下托盘栏气球提示的托盘单元

2016-02-19 19:34 12 1 收藏

给自己一点时间接受自己,爱自己,趁着下午茶的时间来学习图老师推荐的支持XP下托盘栏气球提示的托盘单元,过去的都会过去,迎接崭新的开始,释放更美好的自己。

【 tulaoshi.com - 编程语言 】

 

  unit tray;

  interface
  uses
     Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
    Dialogs,Registry,ShellAPI, ComCtrls, StdCtrls, Buttons, Menus, ExtCtrls;

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

  const
    ICON_ID=3;
    NIF_INFO = $10;
    NIM_SETVERSION = $00000004;
    NOTIFYICON_VERSION = 3;
    NIM_SETFOCUS = $00000003;
    NIIF_INFO = $00000001;
    NIIF_WARNING = $00000002;
    NIIF_ERROR = $00000003;
    NIN_BALLOONSHOW = WM_USER + 2;
    NIN_BALLOONHIDE = WM_USER + 3;
    NIN_BALLOONTIMEOUT = WM_USER + 4;
    NIN_BALLOONUSERCLICK = WM_USER + 5;
    NIN_SELECT = WM_USER + 0;
    NINF_KEY = $1;
    NIN_KEYSELECT = NIN_SELECT or NINF_KEY;

  procedure InstIcon(ToyIcon:TIcon;WinHandle:THandle;cbMessage:Integer);
  procedure DeleIcon(winHandle:THandle);
  procedure ShowBalloonTips(TipInfo,TipTitle:string);

  
  implementation

  Type
    PNewNotifyIconData = ^TNewNotifyIconData;
    TDUMMYUNIONNAME = Record
      case Integer of
        0: (uTimeout: UINT);
        1: (uVersion: UINT);
    end;

    TNewNotifyIconData = Record
      cbSize: DWORD;
      Wnd: HWND;
      uID: UINT;
      uFlags: UINT;
      uCallbackMessage: UINT;
      hIcon: HICON;
      szTip: array [0..127] of Char;    //Version 5.0为128个,以前为64个
      dwState: DWORD;    //Version 5.0
      dwStateMask: DWORD;    //Version 5.0
      szInfo: array [0..255] of Char;   //Version 5.0
      DUMMYUNIONNAME: TDUMMYUNIONNAME;
      szInfoTitle: array [0..63] of Char;   //Version 5.0
      dwInfoFlags: DWORD;   //Version 5.0
    end;

  var
    IconData: TNewNotifyIconData;

  procedure InstIcon(ToyIcon:TIcon;WinHandle:THandle;cbMessage:Integer);
  begin
    IconData.cbSize:=Sizeof(IconData);
    IconData.Wnd:=WinHandle;
    IconData.uID:=ICON_ID;
    IconData.uFlags:=NIF_MESSAGE or NIF_ICON or NIF_TIP;
    IconData.uCallbackMessage:=cbMessage;
    IconData.hIcon:=ToyIcon.Handle;
    IconData.szTip:='LavaTech--Enhance the life!';       //使用是该修改
    Shell_NotifyIcon(NIM_ADD,@IconData);
  end;

  procedure DeleIcon(winHandle:THandle);
  begin
    IconData.cbSize:=SizeOf(IconData);
    IconData.Wnd:=winHandle;
    IconData.uID:=ICON_ID;
    Shell_NotifyIcon(NIM_DELETE,@IconData);
  end;

  procedure ShowBalloonTips(TipInfo,TipTitle:string);
  begin
    IconData.cbSize := sizeof(IconData);
    IconData.uFlags := NIF_INFO;
    strPLCopy(IconData.szInfo, TipInfo, sizeof(IconData.szInfo) - 1);
    IconData.DUMMYUNIONNAME.uTimeout := 3000;
    strPLCopy(IconData.szInfoTitle, TipTitle, sizeof(IconData.szInfoTitle) - 1);
    IconData.dwInfoFlags := NIIF_INFO;
    Shell_NotifyIcon(NIM_MODIFY, @IconData);
  end;

  end.

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

  {
  //使用简介:IconOnClick
  //先添加常量, InstIcon(Application.Icon, Handle,WM_ICONEVENT);这里要用到的
  WM_ICONEVENT=WM_USER+111;
  //申明部分
  procedure IconOnClick(var message:TMessage);message WM_ICONEVENT;
  //实现部分
  procedure TForm1.IconOnClick(var message:Tmessage);
  var
    p:Tpoint;
  begin
    if (message.LParam=WM_LBUTTONDBLCLK) then
    begin
      //双击左键
    end;
    if (message.LParam=WM_RBUTTONDOWN) then
    begin
      GetCursorPos(p);
      PopupMenu1.Popup(p.X,p.Y);
    end;
  end;

  }

来源:http://www.tulaoshi.com/n/20160219/1621338.html

延伸阅读
标签: 电脑入门
自Win10更新以来,回收站图标似乎是大家讨论不停的话题,在改进的过程中,回收站图标设计被网友们吐槽的一塌糊涂。虽然回收站仅仅用来存放我们删除的文件及文件夹,但微软似乎对其非常重视,因为我们每次安装完新系统,桌面上只有一个醒目的回收站图标,只是微软没有设计出大家满意的图标。 现在有部分用户已经不再去纠结回收站的图标设计,但...
标签: 服务器
让Windows7下的MSN图标托盘区显示 相信现在很多朋友都将操作系统升级成了 Windows 7,Windows7的各项功能用着都很顺手;可有一点挺郁闷:打开几个办公文档,网页,聊天工具后,任务栏就满满当当的,Windows Live Messenger 挤在其中并不起眼。 挺怀念以前的版本,Windows Live Messenger 的图标在托盘区,用着习惯。其实修改很简单...
一个托盘程序演示 -闹钟 Alert 作者:Abbey 下载源代码 关键字: 托盘 Tray 想必大家都看见过那些在系统托盘(Tray)中的程序吧,本文就演示了如何创建一个这样的托盘程序Alert。Alert是一个运行在系统托盘中的小闹钟,它在设定的时间后触发,运行屏幕保护程序并播放一...
这将是最后一个组件了,目标定为非可视化,事实上非可视化组件要比可视化组件难做,因为是从TComponent继承而来,就没有了很多属性和事件。而这些都要我们从头来做过。 这个非可视化组件,我决定为托盘组件,其中用到的技术较多,我不如列一个表出来,然后再来讲解好一点。另外,可能篇幅会多一些,请耐心看。 用到的技术: ...
在Windows操作系统中,任务栏的右边(托盘)会常驻几个图标,如输入法切换图标、音量控制图标等,此外我们还经常遇到具有托盘图标的软件,如金山词霸、实时监测功能的杀毒软件等。这些软件在后台运行,通常不占用太多的屏幕资源,只在通知栏上放一个小小的标志,必要时我们可以通过用鼠标点击图标对其进行选单操作或激活其主窗口。有时我们自...

经验教程

380

收藏

46
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部