最近遇到一個項目,在項目之中想監測一個文件夾裡面文件的變化情況,另外想做成開機啟動,並且能夠提醒客戶,便於客戶做出相應的動作。
在網上搜集了不少的東西,對這個我這個東西起了不少的作用,但是總是零零碎碎的,最後還是跌跌撞撞的寫出來了,測試了一下還行,本人本著互聯網的互助原則,將這個小東西放在網上,希望能對大家有一個拋磚引玉的作用,同時也希望大家能多提意見!呵呵…轉入正題吧。
在網上搜索了一下http://www.hackchina.com/cont/27825網站是一個老外的東西,還是比較好用,但是源代碼沒能下載下來!嘿嘿…可能點背。所以就下決心自給自足了。
其實程序的核心類就是.Net的一個控件 ,但是當時沒有發現,做完以後有一種被捉弄的感覺,呵呵…大家僅供借鑒!
本人在程序裡面沒有直接用控件,代碼如下:
- public static FileSystemWatcher watcher = new FileSystemWatcher();
當然問題的解決這樣未免有點太輕松了!接下來就是為對watcher 的事件捕獲並進行相應處理,代碼如下:
- watcher.Changed += new FileSystemEventHandler(OnChanged);
- watcher.Created += new FileSystemEventHandler(OnChanged);
- watcher.Deleted += new FileSystemEventHandler(OnChanged);
- watcher.Renamed += new RenamedEventHandler(OnRenamed);
相信看我問東東的同仁們到現在也就知道怎麼做了,再次不再贅述。另外就是由於文件夾的檢測所以會觸及到系統安全,所以在程序之中程序的權限設置就顯得很有必要,在程序之中加入下面的代碼,能有效地避免程序被誤認為是非法操作。
- [PermissionSetAttribute(SecurityAction.Demand, Name = "FullTrust")]
到此,整個程序的主要功能更就完了,另外就是一個開機啟動的設置和取消,另外就是監測報告!這些問題,開機啟動的設置和取消是Windows的注冊表編程,也就不賣關子了,直接給大家代碼吧:
- private void AutoRun_CheckedChanged(object sender, EventArgs e)
- {
- if (AutoRun.Checked)//開機自動啟動
- {
- try
- {
- RegistryKey runKey = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Run", true);
- runKey.SetValue("文件夾監測.exe", System.Windows.Forms.Application.ExecutablePath);
- runKey.Close();
- }
- catch (IOException)
- {
- return ;
- }
- }
- else //不開機自動啟動注冊表信息刪除
- {
- RegistryKey software = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Run", true);
- string[] aimnames = software.GetValueNames();
- foreach (string aimKey in aimnames)
- {
- if (aimKey.Equals("文件夾監測.exe"))
- {
- software.DeleteValue("文件夾監測.exe") ;
- software.Close();
- break;
- }
- }
- }
- }
這些就是開機啟動的設置以及取消代碼。另外程序可以類似於QQ做消息(文件夾變動消息)提示,當然這些都是一些小把戲,大家應該比我懂得多,我就不獻丑了,現在就講運行的結果展示一下:
這是啟動界面:
上面是軟件的啟動界面,當然上面有我的QQ以及郵箱,大家有什麼指教的,這些聯系方式一般都是可以找到的,除非我睡覺,呵呵…
這是程序的程序開始監測的結果:
上面是運行效果,下面是最小化到托盤、以及消息提示如下圖展示:
紅色矩形的就是運行的檢測程序.代碼程序裡面很全面.
原文鏈接:http://www.cnblogs.com/wukaibo/archive/2011/04/05/2006179.Html
【編輯推薦】
【責任編輯:彭凡 TEL:(010)68476606】