惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

腾讯CDC
The Cloudflare Blog
IT之家
IT之家
V
V2EX
雷峰网
雷峰网
MyScale Blog
MyScale Blog
P
Proofpoint News Feed
Stack Overflow Blog
Stack Overflow Blog
博客园 - Franky
Engineering at Meta
Engineering at Meta
S
SegmentFault 最新的问题
GbyAI
GbyAI
Microsoft Azure Blog
Microsoft Azure Blog
博客园 - 司徒正美
云风的 BLOG
云风的 BLOG
小众软件
小众软件
博客园 - 叶小钗
Blog — PlanetScale
Blog — PlanetScale
C
Check Point Blog
A
About on SuperTechFans
B
Blog
月光博客
月光博客
宝玉的分享
宝玉的分享
Last Week in AI
Last Week in AI

博客园 - 小峰

反思下 [.net] 将 datatable 存储到数据库 - 小峰 要上班了 表达式模版学习笔记 模版元编程学习笔记 模版默认参数小探 boost serialization 试用 套接字 io 模型 小结 精简版 rtti class 能不能这么写 boost/format试用 类成员变量私有化 设计模式小结 接口版本演化引发的思考二 [xna]帧数 皆是#惹的祸 [xna]键盘 代码片段 单元测试
c# 程序最小化到系统托盘
小峰 · 2006-10-28 · via 博客园 - 小峰

   用过千千静听的都知道该软件能够最小化到右下角的系统托盘中。最近我做了个小工具,也要实现类似功能。就是当点击某个按钮或者是快捷键的时候,程序最小化到系统托盘,再次使用快捷键该程序还原。
   首先是解决如何最小化到系统托盘并恢复的问题:
   办法是使用NotifyIcon控件,该控件就是最小化后看到的那个按钮,主要是配置个漂亮的图标:)。程序中加入如下代码:

 1        void MinimizedToNormal()
 2        {
 3            this.Visible = true;
 4            this.WindowState = FormWindowState.Normal;
 5            notifyIcon1.Visible = false;
 6
 7        }

 8        void NormalToMinimized()
 9        {
10            this.WindowState = FormWindowState.Minimized;
11            this.Visible = false;
12            this.notifyIcon1.Visible = true;
13        }

NormalToMinimized()是把当前窗体隐藏,并显示托盘通知按钮(这个按钮初始是隐藏的)。
MinimizedToNormal()是重新显示窗体,并把托盘通知按钮隐藏。

   下面解决如何通过快捷键控制最小化到系统托盘和恢复的问题,办法是调用windows api 
   RegisterHotkey()
   UnregisterHotKey()这组api。
   前一个注册一个系统快捷键,当点击该快捷键的时候可以调用NormalToMinimized()和MinimizedToNormal()进行最小化和恢复工作。
   也可以直接用下面这个压缩包中的两个文件,包含在工程中,这个是老外写的系统快捷键控件。非常方便:)
   /Files/dxfcv222/SystemHotkey.rar
   代码如下:

 1        void systemHotkey1_Pressed(object sender, EventArgs e)
 2        {
 3            if (this.notifyIcon1.Visible)
 4            {
 5                MinimizedToNormal();
 6            }

 7            else
 8            {
 9                NormalToMinimized();
10            }

11        }