C#编写WIN32系统托盘程序
基本功能概述:
- 程序运行后驻留系统托盘,左键呼出,右键退出。后续可加右键菜单。
- 注册系统案件WIN+F10,呼出程序。
- 重写系统消息,最小化和关闭按钮隐藏程序
using System;
using System.Drawing;
using System.Windows.Forms;
using System.Runtime.InteropServices; public enum HotkeyModifiers
{
Alt = ,
Control = ,
Shift = ,
Win =
} public class MyForm:Form
{
[DllImport ("user32.dll")]
private static extern bool RegisterHotKey (IntPtr hWnd, int id, int modifiers, Keys vk); [DllImport ("user32.dll")]
private static extern bool UnregisterHotKey (IntPtr hWnd, int id); const int WM_HOTKEY = 0x312;
const int WM_SYSCOMMAND = 0X112;
const int SC_MAXMIZE = 0xf030;
const int SC_MINMIZE = 0xf020;
const int SC_CLOSE = 0xf060; public MyForm ()
{
NotifyIcon ni = new NotifyIcon (){ Icon = this.Icon, Visible = true };
//RegisterHotKey
bool bOK = RegisterHotKey (this.Handle, , (int)HotkeyModifiers.Win, Keys.F10); this.Closing += delegate {
UnregisterHotKey (this.Handle, );
}; ni.MouseDown += (sender, e) => {
if (e.Button == MouseButtons.Left) {
this.Activate ();
this.Visible = true;
}
if (e.Button == MouseButtons.Right) {
if (DialogResult.Yes==MessageBox.Show("Quit? Realy?","Quit",MessageBoxButtons.YesNo)) {
this.Close ();
}
}
};
} //WndProc
protected override void WndProc (ref Message m)
{
switch (m.Msg) {
case WM_SYSCOMMAND:
int code = m.WParam.ToInt32 ();
if (code == SC_CLOSE || code == SC_MINMIZE) {
this.Visible = false;
return;//Must Prevent WndProc
}
break; //others, such as SC_MAXMIZE must in WndProc.
case WM_HOTKEY:
this.Text = DateTime.Now.ToString ();
this.Activate ();
this.Visible = true;
break;
}
base.WndProc (ref m);
}
} public class MyClass
{
public static void Main ()
{
MyForm form = new MyForm ();
Application.Run (form);
}
}
C#编写WIN32系统托盘程序的更多相关文章
- QT系统托盘应用程序
在QT中QSystemTrayIcon类提供了创建系统托盘程序的功能. QSystemTrayIcon类为系统托盘中的应用程序提供图标.现代操作系统通常会在桌面上提供一个称为系统托盘(system t ...
- WP7系统托盘和应用程序栏
(一)系统托盘和应用程序栏系统托盘(1)显示系统级别的状态信息(2)Apps能隐藏和显示系统托盘Micosoft.Phone.Shell.SystemTray.IsVisible=true;应用程序栏 ...
- Java应用程序使用系统托盘资源
要想使自己开发的Java SE项目运行在自己的电脑系统托盘上,这并不是什么难事,总共需要如下几步即可: 1.线判断一下,系统托盘是否可用,否则接下来的程序将不可避免的报出异常咯 2.获得一个Syste ...
- MFC程序最小化到系统托盘及其响应函数
预备知识: Windows API函数: WINSHELLAPI BOOL WINAPI Shell_NotifyIcon( DWORD dwMessage, PNOTIFYICONDATA pnid ...
- WinForm 程序在系统托盘显示
前言 有些程序在关闭或最小化的时候会隐藏在系统托盘中,双击或右击会重新显示,winform实现其功能很简单,这边就简单的介绍下. 实现 在winform实现托盘使用notifyIcon控件,如果加菜单 ...
- java程序加到系统托盘的方法
package swingtest; import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; impor ...
- 用Qt写软件系列四:定制个性化系统托盘菜单
导读 一款流行的软件,往往会在功能渐趋完善的时候,通过改善交互界面来提高用户体验.毕竟,就算再牛逼的产品,躲藏在糟糕的用户界面之后总会让用户心生不满.界面设计需综合考虑审美学.心理学.设计学等多因素, ...
- 探索Win32系统之窗口类(转载)
Window Classes in Win32 摘要 本文主要介绍win32系统里窗口类的运做和使用机制,探索一些细节问题,使win32窗口类的信息更加明朗化. 在本文中,"类", ...
- C# Win32控制台应用程序忽略 Ctrl + C,阻止程序退出
C# Win32控制台应用程序忽略 Ctrl + C,阻止程序退出,这里使用到了Windows API SetConsoleCtrlHandler函数 注意:在VS中调试执行时,在处理程序例程中设置断 ...
随机推荐
- 为maven插件设置参数的三种方法
很多的maven插件都提供了丰富的可选参数,用户可以通过设置特定的参数值来控制maven插件的行为.设置插件参数的方法主要有三种,分别是命令行设置,POM文件中为插件设置全局参数和POM文件中为插件设 ...
- hdu1260 dp
题意:有 k 个人需要买电影票,a[i] 表示第 i 个人单独买票要花费的时间,b[i] 表示第 i-1 个和第 i 个人一起买票需要花费的时间,问卖给所有人各一张票最少需要到什么时候. dp[i]表 ...
- Unity全视角游戏的键盘操作位移——研究笔记
using UnityEngine; using System.Collections; public class MoveCeShi : MonoBehaviour { ; private Char ...
- AJAX 的简单用法:
AJAX 是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术. AJAX 是一种用于创建快速动态网页的技术.通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新.这意味着可以 ...
- C/C++变量名与值的问题
首先说明变量名是不占空间的. 变量:用来标识一块内存空间,这块内存区域的值一般是可以被该的. 而const常量通常限定这一块内存区域的值是不可被更改的. 变量名:只是一个标识符,并不占内存空间.在c的 ...
- maven项目 启动报错:java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener
tomcat在发布项目的时候没有同时发布maven依赖所添加的jar包,所以找不到解决方法:设置一下eclipse:项目 -> properties -> Deployment Assem ...
- jQuery获取多种input值的方法
1 if($("input[name=item][value='val']").attr('checked')==true) //判断是否已经打勾 name即控件name属性,va ...
- 【转】excel 末尾是0 恢复数据方法
今天从数据库里面查了点数据,用plsql导出为csv数据后用excel打开后就出问题了,显示的问题,excel中会遇到一列中因为数字太长,结果变成了用科学计数法来表示,而这种损失不可逆的,及时改变其格 ...
- 使用 ServiceStack.Text 序列化 json的实现代码【转】
转自:http://www.jb51.net/article/38338.htm 今天发篇文章总结下自己使用 ServiceStack.Text 来序列化 json.它的速度比 Newtonsoft. ...
- VES Hand Book Contents
3...ABOUT THE VES4...Foreword 6...Chapter 1......Introduction6......Visual Effects and Special Effec ...