C# winForm 开机自动启动 并启动后最小化到任务栏 右侧通知栏并交互操作
//设置自动启动
string path = Application.StartupPath;
SettingHel.SetAutoRun(path +@"\MostImpressive.DSCJ.DcbInterface.exe", true);
public static class SettingHel
{
/// <summary>
/// 设置应用程序开机自动运行
/// </summary>
/// <param name="fileName">应用程序的文件名</param>
/// <param name="isAutoRun">是否自动运行,为false时,取消自动运行</param>
/// <exception cref="system.Exception">设置不成功时抛出异常</exception>
/// <returns>返回1成功,非1不成功</returns>
public static String SetAutoRun(string fileName, bool isAutoRun)
{
string reSet = string.Empty;
RegistryKey reg = null;
try
{
if (!System.IO.File.Exists(fileName))
{
reSet = "该文件不存在!";
}
string name = fileName.Substring(fileName.LastIndexOf(@"\") + );
reg = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Run", true);
if (reg == null)
{
reg = Registry.LocalMachine.CreateSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Run");
}
if (isAutoRun)
{
reg.SetValue(name, fileName);
reSet = "";
}
else
{
reg.SetValue(name, false);
} }
catch (Exception ex)
{
//“记录异常”
}
finally
{
if (reg!=null)
{
reg.Close();
}
}
return reSet;
} }
设置.exe程序自动启动
C# winForm启动最小化到任务栏右侧通知栏并交互操作
一。主要功能:
(1)、程序启动自动隐藏到任务栏右侧通知栏显示。(与系统托盘同义)
(2)、双击系统托盘图标显示、隐藏窗口;
(3)、右击系统托盘图标提供三个菜单选项,“退出”、“隐藏”、“显示”;
二。相关控件:
1、建一个WinForm程序—IconForm,将Form属性ShowInTaskbar改为false,这样程序将不会在任务栏中显示。
2、将Form属性WindowState选择为
Minimized,以便起来自动最小化隐藏
3、在工具栏中的“公共控件”里,拖入NotifyIcon控件—notifyIcon1,这个是程序运行任务栏右侧通知区域图标显示控件,为控件notifyIcon的属性Icon添加一个icon图标,或从代码中加入。
4、在工具栏中的“菜单和工具栏”里,拖入ContextMenuStrip—contextMenuStrip1,这个控件是右击时关联菜单。
5、右键notifyIcon1选择属性,将其属性ContextMenuStrip改加为contextMenuStrip1,这个时候notifyIcon1和contextMenuStrip1两个控件就关联了。
6、右键contextMenuStrip1,选择属性,进入Items,然后点击“添加”,这里添加三个菜单选项:exitMenuItem、hideMenuItem、showMenuItem,同时分别将其Text属性改为:退出、隐藏和显示。
三。主要代码:
1、双击IconForm,即添加Load事件然后
//一 右击窗体,选择属性,转到事件页面,双击
Load,SizeChanged事件,给窗体添加代码
private
void Form1_Load(object sender, EventArgs
e)
{
//1.将Form属性ShowInTaskbar改为false,这样程序将不会在任务栏中显示。
//2.将Form属性WindowState选择为
Minimized,以便起来自动最小化隐藏。
string startup = Application.ExecutablePath;
//取得程序路径
int pp =
startup.LastIndexOf("\\");
startup = startup.Substring(0,
pp);
string icon = startup + "\\testIcon.ico";
//3.一定为notifyIcon1其设置图标,否则无法显示在通知栏。或者在其属性中设置
notifyIcon1.Icon = new Icon(icon);
}
private void
Form1_SizeChanged(object sender, EventArgs
e)
{
if
(this.WindowState ==
FormWindowState.Minimized)
{
this.Hide(); //或者是this.Visible =
false;
this.notifyIcon1.Visible =
true;
}
}
//二 双击窗体上的菜单项,添加相关代码
private
void exitMenuItem_Click(object sender, EventArgs
e)
{
if
(MessageBox.Show("你确定要退出程序吗?", "确认", MessageBoxButtons.OKCancel,
MessageBoxIcon.Question, MessageBoxDefaultButton.Button2) ==
DialogResult.OK)
{
notifyIcon1.Visible =
false;
this.Close();
this.Dispose();
Application.Exit();
}
}
private void
hideMenuItem_Click(object sender, EventArgs
e)
{
this.Hide();
}
private void
showMenuItem_Click(object sender, EventArgs
e)
{
this.Show();
this.WindowState =
FormWindowState.Normal;
this.Activate();
}
//三 转到窗体设计模式,右击notifyIcon1
,选择属性,双击其中DoubleClick,添加相关代码
private void notifyIcon1_DoubleClick(object sender, EventArgs
e)
{
if
(this.WindowState ==
FormWindowState.Normal)
{
this.WindowState =
FormWindowState.Minimized;
this.Hide();
}
else if
(this.WindowState ==
FormWindowState.Minimized)
{
this.Show();
this.WindowState =
FormWindowState.Normal;
this.Activate();
}
}
四。完整的代码如下:
using System;
using System.Collections.Generic;
using
System.ComponentModel;
using System.Data;
using System.Drawing;
using
System.Text;
using System.Windows.Forms;
namespace IconForm
{
public partial class Form1 :
Form
{
public Form1()
{
InitializeComponent();
}
//说明,程序运行后自动隐藏到任务栏右侧的通知栏里,
//1
右击选择退出,隐藏,显示
//2 双击可以隐藏和显示切换
//一 右击窗体,选择属性,转到事件页面,双击
Load,SizeChanged事件,给窗体添加代码
private
void Form1_Load(object sender, EventArgs
e)
{
//1.将Form属性ShowInTaskbar改为false,这样程序将不会在任务栏中显示。
//2.将Form属性WindowState选择为
Minimized,以便起来自动最小化隐藏。
string startup = Application.ExecutablePath;
//取得程序路径
int pp =
startup.LastIndexOf("\\");
startup = startup.Substring(0,
pp);
string icon = startup + "\\testIcon.ico";
//3.一定为notifyIcon1其设置图标,否则无法显示在通知栏。或者在其属性中设置
notifyIcon1.Icon = new Icon(icon);
}
private void
Form1_SizeChanged(object sender, EventArgs
e)
{
if
(this.WindowState ==
FormWindowState.Minimized)
{
this.Hide(); //或者是this.Visible =
false;
this.notifyIcon1.Visible =
true;
}
}
//二 双击窗体上的菜单项,添加相关代码
private
void exitMenuItem_Click(object sender, EventArgs
e)
{
if
(MessageBox.Show("你确定要退出程序吗?", "确认", MessageBoxButtons.OKCancel,
MessageBoxIcon.Question, MessageBoxDefaultButton.Button2) ==
DialogResult.OK)
{
notifyIcon1.Visible =
false;
this.Close();
this.Dispose();
Application.Exit();
}
}
private void
hideMenuItem_Click(object sender, EventArgs
e)
{
this.Hide();
}
private void
showMenuItem_Click(object sender, EventArgs
e)
{
this.Show();
this.WindowState =
FormWindowState.Normal;
this.Activate();
}
//三 转到窗体设计模式,右击notifyIcon1
,选择属性,双击其中DoubleClick,添加相关代码
private void notifyIcon1_DoubleClick(object sender, EventArgs
e)
{
if
(this.WindowState ==
FormWindowState.Normal)
{
this.WindowState = FormWindowState.Minimized;
this.Hide();
}
else if
(this.WindowState ==
FormWindowState.Minimized)
{
this.Show();
this.WindowState =
FormWindowState.Normal;
this.Activate();
}
}
}
}
C# winForm 开机自动启动 并启动后最小化到任务栏 右侧通知栏并交互操作的更多相关文章
- C# winForm启动最小化到任务栏右侧通知栏并交互操作
原文链接:http://blog.sina.com.cn/s/blog_45eaa01a01013u36.html C# winForm启动最小化到任务栏右侧通知栏并交互操作 一.主要功能:(1).程 ...
- VC++ 实现VC程序启动时最小化到任务栏(完美解决闪烁问题)
之前写的一个VC应用程序,是程序启动时就直接出现在任务栏, 窗体不出现,等用户点击任务栏图标再出现窗口.和一些防火墙什么的软件类似. 这种效果实现并不是很困难的,硬是找不到最好的.为什么呢? 首先,在 ...
- 如何去掉WinForm或者WPF的最大化和最小化按钮
博客搬到了fresky.github.io - Dawei XU,请各位看官挪步.最新的一篇是:如何去掉WinForm或者WPF的最大化和最小化按钮.
- C#实现WinForm禁止最大化、最小化、双击标题栏、双击图标等操作的方法
from:http://www.jb51.net/article/71319.htm 本文实例讲述了C#实现WinForm禁止最大化.最小化.双击标题栏.双击图标等操作的方法.分享给大家供大家参考.具 ...
- Delphi如何让程序最小化到任务栏(截取WM_SYSCOMMAND后,调用Shell_NotifyIcon)
现在很多的应用程序都有这样一种功能,当用户选择最小化窗口时,窗口不是象平常那样最小化到任务栏上,而是“最小化”成一个任务栏图标.象FoxMail 3.0 NetVampire 3.0等都提供了这样的功 ...
- C# 程序启动最小化至任务栏及闪烁
主要功能: C#让窗体最小化至任务栏,同时在系统托盘区的图标点击左键能显示窗体,并使窗体闪烁. 首先: 创建窗体应用程序,并添加控件NotifyIcon及ContextMenuStrip控件 Noti ...
- Kubuntu中thunderbird最小化到任务栏
作为邮件客户端,如果没有办法显示在任务栏中,实在是说不过去.遗憾的是thunderbird默认真不带这个功能(因为Linux的桌面系统太混乱了?)... 当然,解决也十分简单,只要安装Firetray ...
- 将VMware虚拟机最小化到托盘栏
版权:本文采用「署名-非商业性使用-相同方式共享 4.0 国际」知识共享许可协议进行许可. 目录 前言 将VMware最小化到托盘栏的方法 1.下载 Trayconizer 2.解压 trayco ...
- 将VMware工作站最小化到托盘栏
目录 前言 将VMware最小化到托盘栏的方法 1.下载 Trayconizer 2.解压 trayconizerw.zip 3.创建 VMware 快捷方式 4.修改 VMware 快捷方式 5.运 ...
随机推荐
- C#面向对象(二):封装和继承
前文链接:C#面向对象(一):明确几个简单的概念作为开胃菜 面向对象开发有三大特性(特点 / 特征) : 封装, 继承, 多态.我们今天主要讨论封装和继承,多态会在下篇中讨论. 一.封装: 所谓封装, ...
- 普通平衡树 - Treap
怕被学弟怼 : "你的博客上没有Treap模板啊?" #include <cstdio> #include <cstring> #include <a ...
- linux下ioctl遇到的坑
在驱动编程里面经常会用到ioctl的系统调用,发现cmd = 2的时候,用户ioctl直接返回-1. 原因在于在linux-x.xx/fs/ioctl.c定义的do_vfs_ioctl函数 int d ...
- 微信小程序编写物流信息进度样式
做电商类型的小程序一定会碰到编写物流信息的时候,一般页面如下图 难点在于只有一条信息时候的页面样式 以及多条信息最后一条信息的页面样式 之前没做过这一块的东西,所以刚碰到的时候想了老半天orz.后来上 ...
- UVA548(二叉树遍历)
You are to determine the value of the leaf node in a given binary tree that is the terminal node of ...
- jsp 的url传参中文乱码问题解决办法
在js文件中,使用连接jsp的url传参,如果参数是中文会出现乱码问题,如下可以解决: 方法一:(已确认 可行) String username = new String(request.getPar ...
- XSS自动化检测 Fiddler Watcher & x5s & ccXSScan 初识
一.标题:XSS 自动化检测 Fiddler Watcher & x5s & ccXSScan 初识 automated XSS testing assistant 二.引言 ...
- jenkins学习 03 jenkins配置Maven项目
我们的产品使用Git作为版本管理工具,而jenkins需要git插件来支持git,所以我们需要为jenkins添加git插件. 在Available tab页中找到Git Plugin 点击下方的In ...
- Windows 常见进程
alg.exe描述: alg.exe是Windows系统的一个重要进程,它的功能是用来处理 Internet 连接共享及防火墙,最好不要结束这个进程.taskmgr.exe描述: Windowsxp ...
- js将数组中一个或多个字段相同的子元素中合并
最近js中遇到js将数组中一个或多个字段相同的子元素中合并,相信很多朋友也有遇到,大家可能有多种方法,我在这里记录一个相对简单的方法,当然大家如有其它更好的方法,请提出来大家共同学习. //将经济事项 ...