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