(WinForm)文件夹状态监控,最小化到托盘,开机自启动

原文 (WinForm)文件夹状态监控,最小化到托盘,开机自启动

1.            文件夾監控(監測文件夾中的文件動態):



    //MSDN上的例子

    public class       Watcher



    {



        public static       void       Main()



        {



            Run();



        }



        [PermissionSet(SecurityAction.Demand,       Name = "FullTrust")]



        public static       void       Run()



        {



            string[] args =       System.Environment.GetCommandLineArgs();



            //       If a directory is not specified, exit program.



            if (args.Length != 2)



            {



                //       Display the proper way to call the program.



                Console.WriteLine(“Usage:       Watcher.exe (directory)“);



                return;



            }



            //       Create a new FileSystemWatcher and set its properties.



            FileSystemWatcher       watcher = new       FileSystemWatcher();



            watcher.Path       = args[1];



            /*       Watch for changes in LastAccess and LastWrite times, and       



                     the renaming of files or directories. */



            watcher.NotifyFilter       = NotifyFilters.LastAccess |       NotifyFilters.LastWrite



                     | NotifyFilters.FileName |       NotifyFilters.DirectoryName;



            //       Only watch text files.



            watcher.Filter       = “*.txt“;



            //       Add event handlers.



            watcher.Changed       += new       FileSystemEventHandler(OnChanged);



            watcher.Created       += new       FileSystemEventHandler(OnChanged);



            watcher.Deleted       += new       FileSystemEventHandler(OnChanged);



            watcher.Renamed       += new       RenamedEventHandler(OnRenamed);



            //       Begin watching.



            watcher.EnableRaisingEvents       = true;



            //       Wait for the user to quit the program.



            Console.WriteLine(“Press       \’q\’ to quit the sample.“);



            while (Console.Read() != ‘q‘)       ;



        }



        //       Define the event handlers.



        private static       void OnChanged(object       source, FileSystemEventArgs       e)



        {



            //       Specify what is done when a file is changed, created, or       deleted.



            Console.WriteLine(“File:        “ + e.FullPath + “ “       +       e.ChangeType);



        }



        private static       void OnRenamed(object       source, RenamedEventArgs       e)



        {



            //       Specify what is done when a file is renamed.



            Console.WriteLine(“File:       {0} renamed to {1}“,       e.OldFullPath,       e.FullPath);



        }



    }



  2.     最小化到托盤功能:

首先給主界面添加一個notifyIcon控件,給它的Icon添加一個圖標,不添加圖標的話不會在托盤顯示,然後給主界面的SizeChanged事件注冊一個方法,在方法中將主界面隱藏:



        void       frmMain_SizeChanged(object       sender, EventArgs       e)



        {



            if (this.WindowState       == FormWindowState.Minimized)       {



                this.Hide();



            }



        }



然後給notifyIcon的單擊或者雙擊事件添加一個方法,讓鼠標單擊或者雙擊托盤圖標的時候可以將主界面窗口還原:



        private       void       notifyIcon_MouseDoubleClick(object sender, MouseEventArgs       e)



        {



            this.Visible = true;



            this.WindowState =       FormWindowState.Normal;



        }



3.讓程序開機自動啟動的方法(編輯注冊表)



        private       void       chbStartup_CheckedChanged(object sender, EventArgs       e)



        {



            if (this.chbStartup.Checked)



            {



                try



                {



                    string startupPath =       Application.ExecutablePath;



                    RegistryKey       local =       Registry.LocalMachine;



                    RegistryKey       run = local.CreateSubKey(@”SOFTWARE\Microsoft\Windows\CurrentVersion\Run“);



                    run.SetValue(“FolderWatcher“,       startupPath);



                    local.Close();



                }



                catch (Exception       ex)



                {



                    MessageBox.Show(“開機啟動設置異常:“ +        ex.Message);



                }



            }



            else       {



                try



                {



                    string startupPath =       Application.ExecutablePath;



                    RegistryKey       local =       Registry.LocalMachine;



                    RegistryKey       run = local.CreateSubKey(@”SOFTWARE\Microsoft\Windows\CurrentVersion\Run“);



                    run.DeleteValue(“FolderWatcher“);



                    local.Close();



                }



                catch (Exception       ex)



                {



                    MessageBox.Show(“開機啟動設置異常:“ +        ex.Message);



                }



            }



        }

 

你可能感兴趣的:(WinForm)