//设置自动启动
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 开机自动启动 并启动后最小化到任务栏 右侧通知栏并交互操作的更多相关文章

  1. C# winForm启动最小化到任务栏右侧通知栏并交互操作

    原文链接:http://blog.sina.com.cn/s/blog_45eaa01a01013u36.html C# winForm启动最小化到任务栏右侧通知栏并交互操作 一.主要功能:(1).程 ...

  2. VC++ 实现VC程序启动时最小化到任务栏(完美解决闪烁问题)

    之前写的一个VC应用程序,是程序启动时就直接出现在任务栏, 窗体不出现,等用户点击任务栏图标再出现窗口.和一些防火墙什么的软件类似. 这种效果实现并不是很困难的,硬是找不到最好的.为什么呢? 首先,在 ...

  3. 如何去掉WinForm或者WPF的最大化和最小化按钮

    博客搬到了fresky.github.io - Dawei XU,请各位看官挪步.最新的一篇是:如何去掉WinForm或者WPF的最大化和最小化按钮.

  4. C#实现WinForm禁止最大化、最小化、双击标题栏、双击图标等操作的方法

    from:http://www.jb51.net/article/71319.htm 本文实例讲述了C#实现WinForm禁止最大化.最小化.双击标题栏.双击图标等操作的方法.分享给大家供大家参考.具 ...

  5. Delphi如何让程序最小化到任务栏(截取WM_SYSCOMMAND后,调用Shell_NotifyIcon)

    现在很多的应用程序都有这样一种功能,当用户选择最小化窗口时,窗口不是象平常那样最小化到任务栏上,而是“最小化”成一个任务栏图标.象FoxMail 3.0 NetVampire 3.0等都提供了这样的功 ...

  6. C# 程序启动最小化至任务栏及闪烁

    主要功能: C#让窗体最小化至任务栏,同时在系统托盘区的图标点击左键能显示窗体,并使窗体闪烁. 首先: 创建窗体应用程序,并添加控件NotifyIcon及ContextMenuStrip控件 Noti ...

  7. Kubuntu中thunderbird最小化到任务栏

    作为邮件客户端,如果没有办法显示在任务栏中,实在是说不过去.遗憾的是thunderbird默认真不带这个功能(因为Linux的桌面系统太混乱了?)... 当然,解决也十分简单,只要安装Firetray ...

  8. 将VMware虚拟机最小化到托盘栏

    版权:本文采用「署名-非商业性使用-相同方式共享 4.0 国际」知识共享许可协议进行许可.   目录 前言 将VMware最小化到托盘栏的方法 1.下载 Trayconizer 2.解压 trayco ...

  9. 将VMware工作站最小化到托盘栏

    目录 前言 将VMware最小化到托盘栏的方法 1.下载 Trayconizer 2.解压 trayconizerw.zip 3.创建 VMware 快捷方式 4.修改 VMware 快捷方式 5.运 ...

随机推荐

  1. 2017-2018-1 20179215 第十一周 ShellShock攻击实验

    <Linux内核原理与设计>第十一周作业 ShellShock攻击实验 分组:和20179205王雅哲共同完成实验及博客攥写 实验内容:  Bash中发现了一个严重漏洞shellshock ...

  2. jsp中引入JavaScript的方法

    1:在页面中直接嵌入JavaScript <script language="javascript">..........</script> 2:链接外部J ...

  3. java编程思想第五章初始化与清理

    5.1使用构造器确保初始化: 构造器与一般方法一样,但是没有返回值,且其方法名与类名完全相同. 不接受任何参数的构造器成为默认构造器,也叫无参构造器. 5.2 方法重载: 为什么会有方法重载? 构造器 ...

  4. gitlab init project

    Command line instructions Git global setup git config --global user.name "zxpo" git config ...

  5. Azure CLI的版本问题

    Azure支持多种管理方法.命令行方法有: PowerShell,PowerShell只能运行在Windows上 Azure CLI,而Azure CLI可以运行在Windows.MAC以及Linux ...

  6. [转载]Linux 内核list_head 学习(一)

    在Linux内核中,提供了一个用来创建双向循环链表的结构 list_head.虽然linux内核是用C语言写的,但是list_head的引入,使得内核数据结构也可以拥有面向对象的特性,通过使用操作li ...

  7. (转)nodejs搭建本地http服务器

    本文转载自:http://www.cnblogs.com/shawn-xie/archive/2013/06/06/3121173.html 由于不做php相关的东西,懒得装apache,干脆利用no ...

  8. 使用内省的方式操作JavaBean

    import java.beans.BeanInfo; import java.beans.Introspector; import java.beans.PropertyDescriptor; im ...

  9. java代码输入流篇2

    总结: 方法.和之前的有不同,但是名字太长了+++++ package com.aini; import java.io.*; public class ghd { public static voi ...

  10. RabbitMQ 消息队列 安装及使用

    RabbitMQ 消息队列安装: linux版本:CentOS 7 安装第一步:先关闭防火墙 1.Centos7.x关闭防火墙 [root@rabbitmq /]# systemctl stop fi ...