C#程序啟動(dòng)項(xiàng)的設(shè)置方法
本文為大家分享了C#程序啟動(dòng)項(xiàng)的設(shè)置方法,供大家參考,具體內(nèi)容如下
托盤(pán)圖標(biāo)設(shè)置
新建一個(gè)NotifyIcon,會(huì)在托盤(pán)處顯示一個(gè)圖標(biāo)。
NotifyIcon.Icon可以直接設(shè)置一個(gè)ico圖片,也可以延用原有程序的圖標(biāo)。
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 = "磁盤(pán)清理工具"; this.notifyIcon.ShowBalloonTip(2000); this.notifyIcon.Text = "磁盤(pán)清理工具:每20天清理一次"; this.notifyIcon.Icon = System.Drawing.Icon.ExtractAssociatedIcon(Application.ExecutablePath); this.notifyIcon.Visible = true; //打開(kāi)菜單項(xiàng) MenuItem open = new MenuItem("打開(kāi)"); open.Click += new EventHandler(Show); //退出菜單項(xiàng) MenuItem exit = new MenuItem("退出"); exit.Click += new EventHandler(Close); //關(guān)聯(lián)托盤(pá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 }
禁用多進(jìn)程啟動(dòng)
//禁止雙進(jìn)程 bool canCreateNew; using (System.Threading.Mutex m = new System.Threading.Mutex(true, System.Windows.Forms.Application.ProductName, out canCreateNew)) { if (!canCreateNew) { this.Shutdown(); } }
刪除原有進(jìn)程
/// <summary> /// 刪除原有進(jìn)程 /// </summary> /// <param name="processName"></param> private void KillProcess(string processName) { //得到所有打開(kāi)的進(jìn)程 try { Process currentProcess = Process.GetCurrentProcess(); var processes = Process.GetProcessesByName(processName).Where(process=> process.Id!=currentProcess.Id); foreach (Process thisproc in processes) { //找到程序進(jìn)程,kill之。 if (!thisproc.CloseMainWindow()) { thisproc.Kill(); } } } catch (Exception ex) { } }
設(shè)置開(kāi)機(jī)自啟動(dòng)
private void SetAppAutoRun(bool autoRun) { if (autoRun) //設(shè)置開(kāi)機(jī)自啟動(dòng) { 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 //取消開(kāi)機(jī)自啟動(dòng) { 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() { //禁止雙進(jìn)程 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) //設(shè)置開(kāi)機(jī)自啟動(dòng) { MessageBox.Show("設(shè)置開(kāi)機(jī)自啟動(dòng),需要修改注冊(cè)表", "提示"); // 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 //取消開(kāi)機(jī)自啟動(dòng) { MessageBox.Show("取消開(kāi)機(jī)自啟動(dòng),需要修改注冊(cè)表", "提示"); 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(); } }
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
npoi2.0將datatable對(duì)象轉(zhuǎn)換為excel2007示例
這篇文章主要介紹了npoi2.0將datatable對(duì)象轉(zhuǎn)換為excel2007示例的相關(guān)資料2014-04-04C#實(shí)現(xiàn)連接電子秤串口自動(dòng)稱(chēng)重
這篇文章介紹了C#實(shí)現(xiàn)連接電子秤串口自動(dòng)稱(chēng)重的方法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-04-04WinForm實(shí)現(xiàn)讀取Resource中文件的方法
這篇文章主要介紹了WinForm實(shí)現(xiàn)讀取Resource中文件的方法,很實(shí)用的一個(gè)功能,需要的朋友可以參考下2014-08-08C# 利用Selenium實(shí)現(xiàn)瀏覽器自動(dòng)化操作的示例代碼
這篇文章主要介紹了C# 利用Selenium實(shí)現(xiàn)瀏覽器自動(dòng)化操作,幫助大家更好的理解和使用c#,感興趣的朋友可以了解下2020-09-09C#實(shí)現(xiàn)不同窗體之間傳遞參數(shù)
這篇文章主要介紹了C#實(shí)現(xiàn)不同窗體之間傳遞參數(shù)問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-02-02