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.运 ...
随机推荐
- inux中,关于多路复用的使用,有三种不同的API,select、poll和epoll
inux中,关于多路复用的使用,有三种不同的API,select.poll和epoll https://www.cnblogs.com/yearsj/p/9647135.html 在上一篇博文中提到了 ...
- RabbitMQ教程总结
[译]RabbitMQ教程一 主要通过Hello Word对RabbitMQ有初步认识 [译]RabbitMQ教程二 工作队列,即一个生产者对多个消费者 循环分发.消息确认.消息持久.公平分发 [译] ...
- AngularJs1使用中出现错误 Error: [ng:areq]
1.没有对应的控制器 2.有控制器但是路径没有配对
- unitychan-crs 头发随动脚本
// //SpringCollider for unity-chan! // //Original Script is here: //ricopin / SpringCollider.cs //Ro ...
- 基于SSL的WCF传输安全
[实践]WCF传输安全1:前期准备之证书制作 [实践]WCF传输安全2:基于SSL的WCF匿名客户端 [实践]WCF传输安全3:基于SSL的WCF对客户端验证 [实践]WCF传输安全4:基 ...
- bzoj 2115 [Wc2011] Xor——路径和环的转化
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2115 思路很精妙.好像能应用到很多地方. 发现如果路径上有环,可以通过一些走法达到 异或了那 ...
- 基于微服务的父maven依赖
<dependencies> <!-- spring-boot核心 --> <dependency> <groupId>org.springframew ...
- Linux网络编程——I/O复用之poll函数
一.回顾前面的select select优点: 目前几乎在所有的平台上支持,其良好跨平台支持也是它的一个优点 select缺点: 1.每次调用 select(),都需要把 fd 集合从用户态拷贝到内核 ...
- PHP7卓越性能背后的原理有哪些?
作者:韩天峰链接:http://www.zhihu.com/question/38148900/answer/75115687来源:知乎 PHP7在运行原理上与PHP5相比并没有变化,这与hhvm不同 ...
- POJ2831(次小生成树问题)
Can We Build This One? Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 1475 Accepted: ...