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中调试执行时,在处理程序例程中设置断 ...
随机推荐
- jquery常用选择器和常用方法
基本选择器 $(”#myDiv”) //匹配唯一的具有此id值的元素 $(”div”) //匹配指定名称的所有元素 $(”.myClass”) //匹配具有此class样式值的所有元素 $(”*”) ...
- 如何在Jenkins CI 里调试
背景 厂内的CI系统把 Jenkins 和Github 连接了起来,这样Dev 只要通过github pr 就能够了解到测试job 运行的情况.有的时候,Dev会找到QA问,如何在Jenkins CI ...
- android 观察者模式
1:观察者模式: 1:使用场景:一般使用在自定义控件的事件点击监听上面(或者封装方法进行回调) 2:写观察者模式步骤: (1):声明一个接口 (2):接口里面封装一个抽象方法 (3):需要封装一个 ...
- 【转载】关于在vs2013中配置opengl红宝书第八版环境
本文为转载 原文地址 http://blog.csdn.net/qq821869798/article/details/45247241 本人刚开始学习opengl,买了一本opengl红宝书第八版 ...
- ubuntukylin14安装ns-allinone-2.35教程(虚拟机ubuntu同理)
准备材料: 1.ubuntukylin14,百度进官网自行下载: 2.ns-allinone-2.35.tar.gz,百度进官网自行下载: 3.虚拟机:vmwareworkstation(可选). 4 ...
- js中十进制数转换为16进制
使用 Number类的 toString()方法: var num = 255; console.log(num.toString(16));//输出FF
- maven-deploy失败
昨天遇到的问题,mavne项目执行deploy的时候,出错.提示 Return code is: 401, ReasonPhrase: Unauthorized. -> [Help 1] 很直白 ...
- 转载:Java的接口及实例
转自:http://blog.csdn.net/liujun13579/article/details/7736116/ 一.定义 Java接口(Interface),是一系列方法的声明,是一些方法特 ...
- 远程连接Oracle时出现ORA-01034 和ORA-27101 的解决办法
服务器本地连接自身没有问题,但远程客户端连接时报错,远程客户端使用tnsping也没有问题. cmd->tnsping 192.168.56.101:1521/ora11gR2 tnsping命 ...
- coffeeScript中类的继承[学习篇]
只是在看深入浅出coffeescript中感觉真的很好,不光是coffe写法简单,生成的js也值得学习,废话不多说了,直接抄个书上的例子 class Pet constructor: -> @i ...