1、new -->application

2、在form1中加入一个tPopMenu 命名为pm1

3、uses ShellAPI;

4、定义一个常量在

const

WM_TRAYMSG = WM_USER + 101;

5、在private中生命变量

NotifyIcon: TNotifyIconData;

6.声明两个消息

procedure TfrmMain.WMSysCommand(var Msg: TMessage);

begin

if Msg.WParam = SC_ICON then

Self.Visible := False

else

DefWindowProc(Self.Handle, Msg.Msg, Msg.WParam, Msg.LParam);

end;

procedure TfrmMain.WMTrayMsg(var Msg: TMessage);//声明托盘消息

var

p: TPoint;

begin

case Msg.LParam of

WM_LBUTTONDOWN: Self.Visible := True; //显示窗体

WM_RBUTTONDOWN:

begin

SetForegroundWindow(Self.Handle); //把窗口提前

GetCursorPos(p);

pm1.Popup(p.X, p.Y);

end;

end;

end;

7、oncreate中

with NotifyIcon do

begin

cbSize := SizeOf(TNotifyIconData);

Wnd := Self.Handle;

uID := ;

uFlags := NIF_ICON + NIF_MESSAGE + NIF_TIP; //图标、消息、提示信息

uCallbackMessage := WM_TRAYMSG;

hIcon := Application.Icon.Handle;

szTip := 'erp服务';

end;

Shell_NotifyIcon(NIM_ADD, @NotifyIcon);

//去掉关闭按钮

EnableMenuItem(GetSystemMenu(Handle, FALSE), SC_CLOSE, MF_BYCOMMAND or MF_GRAYED);

8、ondestroy中

Shell_NotifyIcon(NIM_DELETE, @NotifyIcon);

整体代码

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, ShellAPI, Menus;

const

WM_TRAYMSG = WM_USER + ;

type

TForm1 = class(TForm)

pm1: TPopupMenu;

N1: TMenuItem;

procedure FormDestroy(Sender: TObject);

procedure FormCreate(Sender: TObject);

private

NotifyIcon: TNotifyIconData;

procedure WMTrayMsg(var Msg: TMessage); message WM_TRAYMSG; //声明托盘消息

procedure WMSysCommand(var Msg: TMessage); message WM_SYSCOMMAND;

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormDestroy(Sender: TObject);

begin

Shell_NotifyIcon(NIM_DELETE, @NotifyIcon);

end;

procedure TForm1.FormCreate(Sender: TObject);

begin

with NotifyIcon do

begin

cbSize := SizeOf(TNotifyIconData);

Wnd := Self.Handle;

uID := ;

uFlags := NIF_ICON + NIF_MESSAGE + NIF_TIP; //图标、消息、提示信息

uCallbackMessage := WM_TRAYMSG;

hIcon := Application.Icon.Handle;

szTip := 'erp服务';

end;

Shell_NotifyIcon(NIM_ADD, @NotifyIcon);

//去掉关闭按钮

EnableMenuItem(GetSystemMenu(Handle, FALSE), SC_CLOSE, MF_BYCOMMAND or MF_GRAYED);

end;

{ TForm1 }

procedure TForm1.WMSysCommand(var Msg: TMessage);

begin

if Msg.WParam = SC_ICON then

Self.Visible := False

else

DefWindowProc(Self.Handle, Msg.Msg, Msg.WParam, Msg.LParam);

end;

procedure TForm1.WMTrayMsg(var Msg: TMessage);

var

p: TPoint;

begin

case Msg.LParam of

WM_LBUTTONDOWN: Self.Visible := True; //显示窗体

WM_RBUTTONDOWN:

begin

SetForegroundWindow(Self.Handle); //把窗口提前

GetCursorPos(p);

pm1.Popup(p.X, p.Y);

end;

end;

end;

end.

//这是从网上找的在delphi7测试通过(引用的哪忘了)--- http://blog.csdn.net/akof1314/article/details/6411179 这个列牛B

delphi 实现最小化系统托盘(rz控件最简单 评论)

1.new -->application 2.在form1中加入一个tPopMenu 命名为pm1 3.uses ShellAPI; 4.定义一个常量在 const WM_TRAYMSG = W ...

Delphi - 利用TRzTrayIcon实现WinFrm工程最小化到托盘

第三方RC控件的安装 浏览器搜索Delphi Rz控件下载,找到下载一个安装文件,解压后点击RC3.exe一键安装. Delphi WinFrm工程最小化到托盘 Delphi新建WinFrm工程,在主 ...

VC++ 最小化到托盘、恢复

所谓的“托盘”,在Windows系统界面中,指的就是下面任务条右侧,有系统时间等等的标志的那一部分.在程序最小化或挂起时,但有不希望占据任务栏的时候,就可以把程序放到托盘区. 一.托盘编程相关函数   ...

outlook新邮件到达提醒设置以及outlook最小化到托盘设置

有些邮件是需要马上处理的,因此希望能在收到邮件之后马上就知道,但是有不希望频繁的去检查有没有.outlook可以帮我们轻松做到新邮件到达提醒. 一 .设置outlook新邮件到达提醒:选项->电 ...

vc++ 最小化到托盘的详细实现

在VC++中,想实现将MFC最小化到系统托盘,需要调用NOTIFYICONDATA类,并注册相应的消息,以下详细讲解如何实现: 1.声明一个NOTIFYICONDATA类,也就是NOTIFYICOND ...

【VS开发】最小化到托盘 shell_notifyicon和NOTIFYICONDATA

shell_notifyicon和NOTIFYICONDATA Shell_NotifyIcon函数,向任务栏的状态栏发送一个消息 函数原型 BOOL Shell_NotifIcon( DWORD d ...

C++ 最小化到托盘

#define WM_SHOWTASK (WM_USER + 1) void CTestDlg::OnSysCommand(UINT nID, LPARAM lParam) { if ((nID &a ...

WPF实现窗口最小化到托盘,并且实现右击菜单

原版是从网上找了一位大神的,自己只是用了一点适合自己的. 具体实现 1.首先已经确认WPF中没有实现最小化托盘的类与方法,用到了winform中的程序集 using Drawing = System. ...

MFC窗口实现最小化到托盘 右键菜单和还原

//.h文件 void toTray();//最小化到托盘 void DeleteTray();//删除托盘图标 afx_msg LRESULT OnShowTask(WPARAM wParam,LP ...

随机推荐

setNeedsDisplay,setNeedsLayout

UIView的setNeedsDisplay和setNeedsLayout方法.首先两个方法都是异步执行的.setNeedsDisplay会调用自动调用drawRect方法,这样可以拿到UIGraph ...

jquery-validation 使用

jquery-validation 使用 一.用前必备 官方网站:http://bassistance.de/jquery-plugins/jquery-plugin-validation/ API: ...

用Appium进行android自动化测试

appium是开源的移动端自动化测试框架,可以测试ios,android应用.appium让移动端自动化测试不必限定在某种语言和某个具体的框架:也就是说任何人都可以使用自己最熟悉最顺手的语言以及框架来 ...

JodaTime library not available - @DateTimeFormat not supported

使用spring的@DateTimeFormat来格式化Date类型时,报错: org.springframework.validation.BindException: org.springfram ...

NodeJS服务器退出:完成任务,优雅退出

上一篇文章,我们通过一个简单的例子,学习了NodeJS中对客户端的请求(request)对象的解析和处理,整个文件共享的功能已经完成.但是,纵观整个过程,还有两个地方明显需要改进: 首先,不能共享完毕 ...

使用 Xcode 和 Android Studio 管理 iOS 和 Android 项目版本

在移动应用开发和运营的过程中,版本管理是一个老生常谈的基础问题,一些版本的基本概念也常常会困扰我们的研发和运营人员.同时,手动管理软件版本,也常常会因为不小心导致后续的发布和更新问题. 这里,我准备了 ...

动态规划(背包问题):POJ 1742 Coins

Coins Time Limit: 3000MS   Memory Limit: 30000K Total Submissions: 32955   Accepted: 11199 Descripti ...

mysql 1055

在 /etc/my.cnf 文件里加上如下: sql_mode=NO_ENGINE_SUBSTITUTION

delphi 关闭时缩小到托盘_delphi 实现最小化系统托盘相关推荐

  1. pyqt5 最小化 系统托盘_PyQt5 系统托盘

    import sys # 从PyQt库导入QtWidget通用窗口类,基本的窗口集在PyQt5.QtWidgets模块里. from PyQt5.QtWidgets import QApplicati ...

  2. pyqt5 最小化 系统托盘_Qt中如何使窗口隐藏/最小化到托盘

    展开全部 功能62616964757a686964616fe78988e69d8331333361303733:窗口最小化后或者点击"hide"按钮将窗口隐藏到托盘. 通常最小化的 ...

  3. delphi 关闭时缩小到托盘_如何正确地缩小毛孔?

    脸部皮肤粗糙是很多爱美人士存在的问题之一.而形成这个问题的原因,大多都是因为脸部毛孔太大,没有得到及时的护理或护理方式有所欠缺.那今天我就来教大家四招,如何有效的缩小毛孔大小,使皮肤变得更加光滑. 1 ...

  4. pyqt5 最小化 系统托盘,PyQt5:如何从系统托盘图标上下文菜单启动窗口?

    我有两个独立的文件,一个创建系统托盘图标和上下文菜单,另一个创建一个接受用户输入的窗口.在 traywindow.py包含以下内容:import sys import os from PyQt5 im ...

  5. C# 窗口最小化到托盘及右键图标显示菜单

    日常开发有时候需要实现窗口最小化到系统托盘,本文就来讲讲该如何实现winfrom最小化到系统托盘,本例子基于VS2019编写. 用C#开发winform桌面程序时,程序启动后,默认是显示在桌面而且在任 ...

  6. Outlook最小到系统托盘

    Outlook最小到系统托盘 默认状态下outlook最小化以后在任务栏上还占一个位置,又不常用,关了又不能实时接收到邮件,可以通过以下方法隐藏到系统托盘,解决方法如下: 如果你用得是Office20 ...

  7. MFC窗口最小化到托盘

    把程序放到托盘上的本质就是先在托盘区绘制一个图标,然后把程序隐藏不见,再对托盘的图标进行消息处理,就可以了.绘制图标以及确定图标所传送消息的函数只有一个,那就是  WINSHELLAPI BOOL W ...

  8. MFC程序最小化到托盘

    记录下常用小功能,后续使用可以直接Ctrl+C && Ctrl+V. 简而言之:程序最小化到托盘就是先在托盘区绘制一个图标,然后把程序隐藏不见.而恢复就是将程序窗口显示,再将托盘中的图 ...

  9. VC对话框最小化到托盘

    1.***dlg.h头文件设置: 1)public: void setTray();//设置托盘    NOTIFYICONDATA nid;//NOTIFYICONDATA结构包含了系统用来处理托盘 ...

最新文章

  1. IDEA加密文件Base64转换String传输以及报文摘要MD5防止恶意篡改
  2. CSS权重的等级划分
  3. centos7中systemctl 对系统服务的控制
  4. MySQL 数据库修改访问权限,不能使用ip连接mysql问题处理:Host ‘host.docker.internal‘ is not allowed to connect to this ...
  5. 快速排序的递归和非递归的实现
  6. DI 之 3.4 Bean的作用域(捌)
  7. 还在用 Redux,要不要试试 GraphQL 和 Apollo?
  8. Mysql中Event的一些测试
  9. linux防火墙多个 多个ip配置,iptables一次性封多个ip,使用ipset 工具
  10. 幅频特性、相频特性的概念解释
  11. 校招——测试开发工程师岗位面试问题
  12. mflac格式解密_mflac格式是什么意思
  13. 一战封神快速升级攻略
  14. ThinkPad物理机安装Linux系统实战企业级项目之CentOS安装
  15. LabVIEW如何打开Acrobat PDF文件
  16. 学计算机当导演吗,学计算机8年 80岁老荣民当“导演”
  17. php计算股票均线,移动平均线——Moving Average 平均线的计算公式
  18. 有源淹没分析arcgis_洪涝有源淹没算法及淹没结果分析
  19. 从移动激光扫描数据中自动提取单棵树的双重生长方法
  20. office2003和office2007比较

热门文章

  1. 一个通用数据库操作组件DBUtil(c#)、支持SqlServer、Oracle、Mysql、postgres、SQLITE
  2. 微软开源故事 | 开启 .NET 开源革命
  3. [小技巧]C#中如何为枚举类型添加描述方法
  4. 终于明白了 C# 中 Task.Yield 的用途
  5. 你需要知道的这几种 asp.net core 修改默认端口的方式
  6. Dependency injection in .NET Core的最佳实践
  7. dotnet core webapi +vue 搭建前后端完全分离web架构(一)
  8. 不可思议黑科技,Xamarin移动开发新时代
  9. .NET平台开源项目速览-最快的对象映射组件Tiny Mapper之项目实践
  10. linux内核源码剖析 博客,【Linux内存源码分析】页面迁移