2019-09-26 09:59:16 5860瀏覽
本篇文章扣丁學堂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); //關聯(lián)托盤控件 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(); } }
想要了解更多內容的小伙伴可以登錄扣丁學堂官網(wǎng)咨詢。想要學好JAVA開發(fā)小編給大家推薦口碑良好的扣丁學堂,扣丁學堂有專業(yè)老師制定的JAVA學習路線圖輔助學員學習,此外還有與時俱進的JAVA課程體系和JAVA視頻教程供大家學習,想要學好JAVA開發(fā)技術的小伙伴快快行動吧。扣丁學堂Java技術交流群:850353792。
【關注微信公眾號獲取更多學習資料】 【掃碼進入JavaEE/微服務VIP免費公開課】