Windows任务栏系统托盘图标演示程序

许多应用程序,如输入法管理器、杀毒软件等均在任务栏布告区中放置一个有自已特色的图标,该图标让用户知道有一个后台程序正在运行,同时也提供了一种修改系统设置的快捷方法,本文将以C++ Builder为例简述它的实现方法。

打开一个新工程,将工程文件取名为test、单元文件取名为main。在窗口上放置二个按钮、一个标签,其属性按如下设置

组件      属性     值

Label1    Caption  按OK按钮...终止程序

OKButton   Caption  &OKButton

CancelButton Caption  &CancelButton

打开文件main.h,加入斜体部分声明(以手工输入部分均以斜体表示,以下同)

class TForm1 : public TForm
{
__published: // IDE-managed Components
TButton *OKButton;
TButton *CancelButton;
TLabel *Label1;
void __fastcall FormCreate(TObject *Sender);
void __fastcall FormDestroy(TObject *Sender);
void __fastcall OKButtonClick(TObject *Sender);
void __fastcall CancelButtonClick(TObject *Sender);
private: // User declarations
unsigned ugIconMessage;
void AddTray();
void DeleteTray();
protected:
virtual void __fastcall WndProc(Messages::TMessage &Message);
public: // User declarations
__fastcall TForm1(TComponent* Owner);
};

切换到main.cpp,加入以下函数及声明

#include
#pragma hdrstop
#include
#include "main.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void TForm1::AddTray()//创建任务栏布告区图标
{
NOTIFYICONDATA icondata;①
memset(&icondata,0,sizeof(icondata));②
icondata.cbSize=sizeof(icondata);
icondata.hWnd=Handle;③
strncpy(icondata.szTip,"我的任务",sizeof(icondata.szTip));④
Application->Icon->LoadFromFile("e:\\yxg\\map\\system\\ico\\yxg.ico");
icondata.hIcon=Application->Icon->Handle; ⑤
icondata.uCallbackMessage=ugIconMessage;⑥
icondata.uFlags=NIF_MESSAGE|NIF_ICON|NIF_TIP;⑦
Shell_NotifyIcon(NIM_ADD,&icondata);⑧
}
void TForm1::DeleteTray()//删除任务栏布告区图标
{
NOTIFYICONDATA icondata;
memset(&icondata,0,sizeof(icondata));
icondata.cbSize=sizeof(icondata);
icondata.hWnd=Handle;
Shell_NotifyIcon(NIM_DELETE,&icondata); ⑧
}
void __fastcall TForm1::WndProc(Messages::TMessage &Message)
{
if(Message.Msg==ugIconMessage)//如果产生的是与该图标相关的消息
{
if(Message.LParam==WM_LBUTTONDBLCLK)
Application->Terminate();⑨
if(Message.LParam==WM_RBUTTONDBLCLK)
{
ShowWindow(Application->Handle,SW_SHOW);//
Application->ShowMainForm=true;
Form1->Visible=true; ⑩
}
return;
}
TForm::WndProc(Message);
}

时间: 2024-10-28 20:25:32

Windows任务栏系统托盘图标演示程序的相关文章

在C#中,如何设置系统托盘,按窗体最小化按钮时缩小到任务栏(托盘图标保留),按关闭按钮时缩小到托盘?

问题描述 在窗体的from_Closing事件中调用this.ShowInTaskbar=false;notifyIcon1.Visible=true;这两句代码也没用,重写onClosing方法也不行,但求甚解!Thankyouforthat! 解决方案 解决方案二:privatevoidForm1_SizeChanged(objectsender,EventArgse){if(this.WindowState==FormWindowState.Minimized)//最小化{this.Hid

C#下实现动态系统托盘图标

动态 Visual C#是微软公司推出的下一代程序开发语言,是微软.Net框架中的的一个重要组成部分.微软的.Net平台堪称为新一代的互联网平台.对于技术开发人员来说,.Net平台的两大特性是非常卓越的,首先是其所提供的公共语言运行时,也就是公用语言运行平台,另一方面就是其庞大而全面的统一编程类.Visual C#就是通过调用这些类.对象来实现许多比较强大的功能. 本文通过向大家介绍一个.Net平台上用C#写的可以停放在任务栏上的图标程序(类似于Flashget.OICQ那种系统托盘图标)来和大

Inno Setup 系统托盘图标插件 TrayIconCtrl V1.5

原文 http://restools.hanzify.org/article.asp?id=93 V1.5 修正在某些 Windows 平台上(例如 Windows XP SP3)不能正常运行的问题.  引用来自 trayiconctrl.iss,2009-10-16 21:06:53 ; -- trayiconctrl.iss --; restools; http://restools.hanzify.org; TrayIconCtrl.dll 为一个用于 Inno Setup 的 15.5

用XP-AntiSpy优化Windows XP SP2系统

目前,很多朋友都安装了Windows XP SP2,但是在默认情况下,Windows XP SP2会很武断地开启许多服务,对于个人用户来说,有些服务完全没必要启动,不仅浪费你的系统资源,而且它还在很多情况下会自动连接网络,虽然微软声称此举不会收集个人信息,但是总让人心里打鼓.放心不下!有什么好的办法来优化Windows XP SP2,把那些不安全的地方全部关闭呢?其实,利用XP-AntiSpy这款软件就可以帮你这个大忙! 软件名称:XP-AntiSpy 软件版本:V3.94-1简体中文版 软件大

Windows 8.1系统电话激活时无法输入微软返回代码怎么办

  Windows 8.1系统下,用户在进行"系统激活 "时,如果选择"通过电话激活 "; 然后选择"中国 ",并单击"下一步 "; 拨打微软激活电话并获取到微软提供的"返回 ID ",然后单击"输入确认 ID ". 在出现的如下界面,却无法输入获取到的"确认 ID ",如何解决? 原因分析:这是Windows激活的一个问题,后期微软将会通过发布补丁的方式解决. 临时

Windows 8.1系统自定义开始屏幕改变默认的状态

  自定义开始屏幕意味着你可以随意整理和排列"开始"屏幕.你可以调整磁贴大小,并按照所需方式随意移动它们.例如,你可以放大经常使用的磁贴,以及缩小不经常使用的磁贴.你可以按最适合自己的方式调整磁贴大小和排列它们.你还可以对磁贴进行分组,以帮助跟踪你的应用以及更加高效地使用它们.无论你选择何种方式整理磁贴,自定义"开始"屏幕均能使你更加轻松地访问应用.文件夹.网站,以及最常联系的人员. 在"开始"屏幕上移动磁贴 1.在"开始"屏

找回丢失的Windows任务栏图标

Windows任务栏是包含开始按钮,默认情况下出现在桌面底部的栏.可通过单击任务栏按钮在运行的程序间切换.同时,在windows任务栏上,有不少图标,如显示桌面,语言栏等,它们能够方便大家的操作.如果这些图标突然不见了踪影,那么让我二百五来帮你找到丢失的windows任务栏图标吧. 找回丢失的windows 任务栏图标之快速启动栏 快速启动栏位于开始按钮的右侧,默认包含了显示桌面,IE等图标,它简化了你对这些程序的访问方式以及IE窗口的打开方式.如需你的电脑在任务栏上没有快速启动栏,请执行以下操

找回丢失的Windows系统任务栏图标

Windows任务栏是包含开始按钮,默认情况下出现在桌面底部的栏.可通过单击任务栏按钮在运行的程序间切换.同时,在windows任务栏上,有不少图标,如显示桌面,语言栏等,它们能够方便大家的操作.如果这些图标突然不见了踪影,那么让我二百五来帮你找到丢失的windows任务栏图标吧. 找回丢失的windows 任务栏图标之快速启动栏 快速启动栏位于开始按钮的右侧,默认包含了显示桌面,IE等图标,它简化了你对这些程序的访问方式以及IE窗口的打开方式.如需你的电脑在任务栏上没有快速启动栏,请执行以下操

找回丢失的Windows任务栏图标的方法

第一.找回丢失的windows 任务栏图标之语言栏 语言栏是我们输入汉字或字符时不可或缺的好帮手,因为要切换中英文输入法就离不开语言栏.如果语言栏没有显示出来,请按以下操作请其出山: A.依次单击"开始/控制面板/日期.时间.语言和区域设置/区域和语言选项" B.单击"语言"选项卡,在"文字服务和输入语言"下,单击"详细信息". C.单击"设置"选项卡,在"首选项"下,单击"语