扣丁学堂JAVA培训简述C#程序启动项的设置方法

ITxuexi_66 · · 1766 次点击 · 开始浏览    置顶
这是一个创建于 的主题,其中的信息可能已经有所发展或是发生改变。
本篇文章扣丁学堂JAVA培训小编主要是给大家介绍一下C#程序启动项的设置方法,关于C#程序启动项的设置方法文中有详细的代码列出供小伙伴们参考,感兴趣的小伙伴就随小编一起来看看吧。 托盘图标设置 新建一个NotifyIcon,会在托盘处显示一个图标。 NotifyIcon.Icon可以直接设置一个ico图片,也可以延用原有程序的图标。 notifyIcon.Icon = System.Drawing.Icon.ExtractAssociatedIcon(Application.ExecutablePath); public partial class MainWindow : Window { private NotifyIcon notifyIcon; public MainWindow() { InitializeComponent(); SetNotifyIcon(); this.Hide(); } #region NotifyIcon private void SetNotifyIcon() { this.notifyIcon = new NotifyIcon(); this.notifyIcon.BalloonTipText = "磁盘清理工具"; this.notifyIcon.ShowBalloonTip(2000); this.notifyIcon.Text = "磁盘清理工具:每20天清理一次"; this.notifyIcon.Icon = System.Drawing.Icon.ExtractAssociatedIcon(Application.ExecutablePath); this.notifyIcon.Visible = true; //打开菜单项 MenuItem open = new MenuItem("打开"); open.Click += new EventHandler(Show); //退出菜单项 MenuItem exit = new MenuItem("退出"); exit.Click += new EventHandler(Close); //关联托盘控件 MenuItem[] childen = new MenuItem[] { open, exit }; notifyIcon.ContextMenu = new ContextMenu(childen); this.notifyIcon.MouseDoubleClick += new MouseEventHandler((o, e) => { if (e.Button == MouseButtons.Left) this.Show(o, e); }); } private void Show(object sender, EventArgs e) { this.Visibility = Visibility.Visible; this.ShowInTaskbar = true; this.Activate(); } private void Hide(object sender, EventArgs e) { this.ShowInTaskbar = false; this.Visibility = Visibility.Hidden; } private void Close(object sender, EventArgs e) { System.Windows.Application.Current.Shutdown(); } #endregion #region 窗口 private void MinimizeButton_OnClick(object sender, RoutedEventArgs e) { WindowState = WindowState.Minimized; } private void CloseButton_OnClick(object sender, RoutedEventArgs e) { this.Hide(); } private void HeaderGrid_OnMouseLeftButtonDown(object sender, MouseButtonEventArgs e) { if (e.ButtonState == MouseButtonState.Pressed) { this.DragMove(); } } #endregion } 禁用多进程启动 //禁止双进程 bool canCreateNew; using (System.Threading.Mutex m = new System.Threading.Mutex(true, System.Windows.Forms.Application.ProductName, out canCreateNew)) { if (!canCreateNew) { this.Shutdown(); } } 删除原有进程 /// <summary> /// 删除原有进程 /// </summary> /// <param name="processName"></param> private void KillProcess(string processName) { //得到所有打开的进程 try { Process currentProcess = Process.GetCurrentProcess(); var processes = Process.GetProcessesByName(processName).Where(process=> process.Id!=currentProcess.Id); foreach (Process thisproc in processes) { //找到程序进程,kill之。 if (!thisproc.CloseMainWindow()) { thisproc.Kill(); } } } catch (Exception ex) { } } 设置开机自启动 private void SetAppAutoRun(bool autoRun) { if (autoRun) //设置开机自启动 { string path = System.Windows.Forms.Application.ExecutablePath; RegistryKey rk = Registry.LocalMachine; RegistryKey rk2 = rk.CreateSubKey(@"Software\Microsoft\Windows\CurrentVersion\Run"); rk2.SetValue("JcShutdown", path); rk2.Close(); rk.Close(); } else //取消开机自启动 { RegistryKey rk = Registry.LocalMachine; RegistryKey rk2 = rk.CreateSubKey(@"Software\Microsoft\Windows\CurrentVersion\Run"); rk2.DeleteValue("JcShutdown", false); rk2.Close(); rk.Close(); } } App.cs中完整代码: public partial class App : Application { public App() { //禁止双进程 bool canCreateNew; using (System.Threading.Mutex m = new System.Threading.Mutex(true, System.Windows.Forms.Application.ProductName, out canCreateNew)) { if (!canCreateNew) { this.Shutdown(); } } SetAppAutoRun(true); Startup += App_Startup; } private void SetAppAutoRun(bool autoRun) { if (autoRun) //设置开机自启动 { MessageBox.Show("设置开机自启动,需要修改注册表", "提示"); // hovertree.com string path = System.Windows.Forms.Application.ExecutablePath; RegistryKey rk = Registry.LocalMachine; RegistryKey rk2 = rk.CreateSubKey(@"Software\Microsoft\Windows\CurrentVersion\Run"); rk2.SetValue("JcShutdown", path); rk2.Close(); rk.Close(); } else //取消开机自启动 { MessageBox.Show("取消开机自启动,需要修改注册表", "提示"); RegistryKey rk = Registry.LocalMachine; RegistryKey rk2 = rk.CreateSubKey(@"Software\Microsoft\Windows\CurrentVersion\Run"); rk2.DeleteValue("JcShutdown", false); rk2.Close(); rk.Close(); } } private void App_Startup(object sender, StartupEventArgs e) { new AutoCleanCacheHelper(CleanCacheVeiwModel.ViewModel).Start(); } } 想要了解更多内容的小伙伴可以登录扣丁学堂官网咨询。想要学好JAVA开发小编给大家推荐口碑良好的扣丁学堂,扣丁学堂有专业老师制定的JAVA学习路线图辅助学员学习,此外还有与时俱进的JAVA课程体系和JAVA视频教程供大家学习,想要学好JAVA开发技术的小伙伴快快行动吧。扣丁学堂Java技术交流群:850353792。

有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:701969077

1766 次点击  
加入收藏 微博
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传