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.运 ...
随机推荐
- 2017-2018-1 20179215 第十一周 ShellShock攻击实验
<Linux内核原理与设计>第十一周作业 ShellShock攻击实验 分组:和20179205王雅哲共同完成实验及博客攥写 实验内容: Bash中发现了一个严重漏洞shellshock ...
- jsp中引入JavaScript的方法
1:在页面中直接嵌入JavaScript <script language="javascript">..........</script> 2:链接外部J ...
- java编程思想第五章初始化与清理
5.1使用构造器确保初始化: 构造器与一般方法一样,但是没有返回值,且其方法名与类名完全相同. 不接受任何参数的构造器成为默认构造器,也叫无参构造器. 5.2 方法重载: 为什么会有方法重载? 构造器 ...
- gitlab init project
Command line instructions Git global setup git config --global user.name "zxpo" git config ...
- Azure CLI的版本问题
Azure支持多种管理方法.命令行方法有: PowerShell,PowerShell只能运行在Windows上 Azure CLI,而Azure CLI可以运行在Windows.MAC以及Linux ...
- [转载]Linux 内核list_head 学习(一)
在Linux内核中,提供了一个用来创建双向循环链表的结构 list_head.虽然linux内核是用C语言写的,但是list_head的引入,使得内核数据结构也可以拥有面向对象的特性,通过使用操作li ...
- (转)nodejs搭建本地http服务器
本文转载自:http://www.cnblogs.com/shawn-xie/archive/2013/06/06/3121173.html 由于不做php相关的东西,懒得装apache,干脆利用no ...
- 使用内省的方式操作JavaBean
import java.beans.BeanInfo; import java.beans.Introspector; import java.beans.PropertyDescriptor; im ...
- java代码输入流篇2
总结: 方法.和之前的有不同,但是名字太长了+++++ package com.aini; import java.io.*; public class ghd { public static voi ...
- RabbitMQ 消息队列 安装及使用
RabbitMQ 消息队列安装: linux版本:CentOS 7 安装第一步:先关闭防火墙 1.Centos7.x关闭防火墙 [root@rabbitmq /]# systemctl stop fi ...