发新话题
打印

[原创]文件守护神

[原创]文件守护神

文章作者:kebin
信息来源:邪恶八进制信息安全团队(www.eviloctal.com

小弟我又来了-_-@ 老样子c#编写

这个好几天前写的 今天写的差不多了 昨天 弄出来 zshoucheng帮改了一下又加了点东西 过几天有心情 在加个定位文件 和删除的
写这个主要试下托盘功能 .net框架类库 真强大啊!-_-@
这几天感觉功力大增 哈哈

其实这个 .net 有个控件就可以实现 几行代码就搞定了 我写了怎么多
当我看到的那篇文章的时候遇哭无泪啊\
下面是源码 开源能得到高手指点一下 还是开源好
Code Language : C
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Text;
  7. using System.Windows.Forms;
  8. using System.IO;
  9. using System.Diagnostics;
  10.  
  11. namespace WindowsApplication5
  12. {
  13.   public partial class Form1 : Form
  14.   {
  15.     public Form1()
  16.     {
  17.       InitializeComponent();
  18.     }
  19.  
  20.     private void button1_Click(object sender, EventArgs e)
  21.     {
  22.       listBox1.Items.Clear();
  23.     }
  24.    
  25.     private void button2_Click(object sender, EventArgs e)
  26.     {
  27.       MessageBox.Show(\"启动成功\", \"东方不败3\");
  28.      fsw.Path = textBox1.Text;
  29.      fsw.Filter = \"*.\" + textBox2.Text;
  30.      fsw.EnableRaisingEvents = true; //获取一个值
  31.      fsw.IncludeSubdirectories = true; //启动监视子目录
  32.      fsw.Created += new FileSystemEventHandler(fsw_Created); //创建
  33.      fsw.Changed += new FileSystemEventHandler(fsw_Changed); //内容发生
  34.      fsw.Deleted += new FileSystemEventHandler(fsw_Deleted); //删除
  35.      fsw.Renamed += new RenamedEventHandler(fsw_Renamed);//修改
  36.  
  37.      kfc.Path = textBox1.Text;
  38.      kfc.Filter = \"*.\" + boss.Text;
  39.      kfc.EnableRaisingEvents = true;
  40.      kfc.IncludeSubdirectories = true;
  41.      kfc.Changed += new FileSystemEventHandler(kfc_Changed);
  42.      kfc.Renamed += new RenamedEventHandler(kfc_Renamed);
  43.      kfc.Deleted += new FileSystemEventHandler(kfc_Deleted);
  44.      kfc.Created += new FileSystemEventHandler(kfc_Created);
  45.    }
  46.  
  47.    void kfc_Changed(object sender, FileSystemEventArgs e)
  48.    {
  49.      string kio = e.Name;
  50.      listBox1.Items.Add(textBox1.Text + kio + \"文件内容修改\" + DateTime.Now);
  51.    }
  52.    void kfc_Renamed(object sender, FileSystemEventArgs e)
  53.    {
  54.      string kio = e.Name;
  55.      listBox1.Items.Add(textBox1.Text + kio + \"文件修改\" + DateTime.Now);
  56.  
  57.    }
  58.    void kfc_Created(object sender, FileSystemEventArgs e)
  59.    {
  60.      string kio = e.Name;
  61.      listBox1.Items.Add(textBox1.Text + kio + \"文件创建\" + DateTime.Now);
  62.    }
  63.    void kfc_Deleted(object sender, FileSystemEventArgs e)
  64.    {
  65.      string kio = e.Name;
  66.      listBox1.Items.Add(textBox1.Text + kio + \"文件删除\" + DateTime.Now);
  67.    }
  68.  
  69.  
  70.    void fsw_Renamed(object sender, FileSystemEventArgs e)
  71.    {
  72.      string kig = e.Name;
  73.  
  74.  
  75.      listBox1.Items.Add(textBox1.Text + kig + \"文件修改\" + DateTime.Now);
  76.  
  77.  
  78.    }
  79.  
  80.    void fsw_Deleted(object sender, FileSystemEventArgs e)
  81.    {
  82.      string kig = e.Name;
  83.  
  84.      listBox1.Items.Add(textBox1.Text + kig + \"文件删除:\" + DateTime.Now);
  85.    }
  86.  
  87.    void fsw_Changed(object sender, FileSystemEventArgs e)
  88.    {
  89.      string kig = e.Name;
  90.      listBox1.Items.Add(textBox1.Text + kig + \"文件内容修改:\" + DateTime.Now);
  91.    }
  92.  
  93.    void fsw_Created(object sender, FileSystemEventArgs e)
  94.    {
  95.      string kig = e.Name;
  96.      listBox1.Items.Add(textBox1.Text + kig + \"文件创建:\" + DateTime.Now);
  97.    }
  98.  
  99.    private void button3_Click(object sender, EventArgs e)
  100.    {
  101.      fsw.EnableRaisingEvents = false;
  102.    }
  103.  
  104.    private void button4_Click(object sender, EventArgs e)
  105.    {
  106.  
  107.      if (fbd.ShowDialog() == DialogResult.OK)
  108.      {
  109.        textBox1.Text = fbd.SelectedPath;
  110.      }
  111.  
  112.    }
  113.  
  114.    private void button5_Click(object sender, EventArgs e)
  115.    {
  116.      asm.Filter = \"文本文件(*.txt)|*.txt|所有文件(*.*)|*.*\";
  117.  
  118.      if (asm.ShowDialog() == DialogResult.OK)
  119.      {
  120.        //选择了确定,  
  121.        if (asm.FileName.Trim() != \"\")
  122.        {
  123.          StreamWriter sw = new StreamWriter(asm.FileName, false);
  124.          //sw.Write();
  125.          //sw.Close();
  126.          int i = listBox1.Items.Count;
  127.          for (int j = 0; j < i; j++)
  128.          {
  129.            sw.WriteLine(listBox1.Items[j].ToString());
  130.          }
  131.          MessageBox.Show(\"保存成功\", \"东方不败3\");
  132.          sw.Close();
  133.        }
  134.      }
  135.  
  136.    }
  137.  
  138.    private void button6_Click(object sender, EventArgs e)
  139.    {
  140.      if (File.Exists(\"C:\\WINDOWS\\regedit.exe\")) //XP 2003 注册表
  141.      {
  142.        System.Diagnostics.Process.Start(\"C:\\WINDOWS\\regedit.exe\");
  143.      }
  144.      else if (File.Exists(\"C:\\WINNT\\regedit.exe\")) //2000注册表
  145.      {
  146.        System.Diagnostics.Process.Start(\"C:\\WINNT\\regedit.exe\");
  147.      }
  148.    }
  149.  
  150.    private void Form1_Load(object sender, EventArgs e)
  151.    {
  152.      contextMenuStrip1.Items.Add(ToolStripMenuItem);
  153.    }
  154.  
  155.    private void button6_Click_1(object sender, EventArgs e)
  156.    {
  157.      Visible = false;
  158.      sb.Visible = true;
  159.      
  160.    }
  161.  
  162.  
  163.    private void 最大化ToolStripMenuItem_Click(object sender, EventArgs e)
  164.    {
  165.      Visible = true;
  166.      sb.Visible = false;
  167.    }
  168.  
  169.    private void ToolStripMenuItem_Click_1(object sender, EventArgs e)
  170.    {
  171.      Application.Exit();
  172.    }
  173.  
  174.    private void 东方不败3ToolStripMenuItem_Click(object sender, EventArgs e)
  175.    {
  176.      Process p = new Process();
  177.      p.StartInfo.FileName = \"iexplore.exe\";
  178.      p.StartInfo.Arguments = \"http://hi.baidu.com/cuiyangyang\";
  179.      p.Start();  
  180.    }
  181.  
  182.  }
  183. }
Parsed in 0.040 seconds

附件

文件守护神.rar (16 KB)

2007-7-2 19:22, 下载次数: 45

TOP

你还没养成给控件命名的习惯,
一堆 button1 button2 button3 button4 button5 button6...让人看得晕
可能你还不会该怎么个命名法,你可以参考下面的:

"清屏" --- btnClear
"启动监视" --- btnStart
"停止监视" --- btnStop
"保存日志" --- btnSave
...

希望下次不要让我看到你不给控件命名就往上扔!
其他变量命名如kfc kio kig boss asm 不知你是怎么想出来的,变量名不是随便取的,而要表达出它的作用!

代码中还需注意的地方:
1.button2_Click中,MessageBox.Show("启动成功", "东方不败3");不要放在第一句,而要放在最后
因为不是一点击按钮就监视成功,而是当后面的代码成功执行那才监视成功!

2.button3_Click中,加句kfc.EnableRaisingEvents = false;// PS:不知道kfc是根据什么来命名的

3.button6_Click中,直接用Process.Start("regedit.exe");一句就够了,它会自动去系统目录搜索regedit.exe,而不管你系统目录在哪

4.东方不败3ToolStripMenuItem_Click中,直接Process.Start("http://hi.baidu.com/cuiyangyang");更好,因为有的电脑可能没装IE或卸掉了

其他还有些小问题如异常、容错处理。。。
--->  伱 能 領 導 潮 流.  我 可 領 導 全 賕!  <---

TOP

kfc是fileSystemWatcher控件
2.button3_Click中,加句kfc.EnableRaisingEvents = false;// PS:不知道kfc是根据什么来命名的
这个地方是停止 我用了双控件 只停止了一个..汗

TOP

引用:
引用第2楼kebin于2007-07-03 09:09发表的 :
kfc是fileSystemWatcher控件
那个kig好象是你写上去的....
2.button3_Click中,加句kfc.EnableRaisingEvents = false;// PS:不知道kfc是根据什么来命名的
这个地方是停止 我用了双控件 只停止了一个..汗
fileSystemWatcher控件为何给他取kfc?
Kig是我写的?老弟弄清楚了哦,我可不会写出这样莫名其妙的名字
冤枉我下次不帮你了~~~

你不是说你熟悉Delphi的吗?
看来也熟悉不到哪里去
因为看你根本没编码规范这方面的经验
--->  伱 能 領 導 潮 流.  我 可 領 導 全 賕!  <---

TOP

自学的..........................
没啥正规经验  会写就不错了

delphi 我还自我感觉良好 比c# 强多了

TOP

引用:
引用第4楼kebin于2007-07-03 10:06发表的 :
自学的..........................
没啥正规经验  会写就不错了

delphi 我还自我感觉良好 比c# 强多了
自学?谁不是自学?
有多少人有人教?

连根本的编码规范的概念都没有还自我良好,还是塌实点学习吧
你自己看下你这么个小程序都问题多多

我说的你爱听就听,学习得好坏是你自己的事
--->  伱 能 領 導 潮 流.  我 可 領 導 全 賕!  <---

TOP

zshoucheng 说得是啊.俺正在学习中...以后有代码也发点上来...不然自学真的太野了

TOP

编码以后会注意

不过你能实现的功能我用delphi 也能实现

TOP

引用:
引用第1楼zshoucheng于2007-07-03 00:41发表的 :
3.button6_Click中,直接用Process.Start("regedit.exe");一句就够了,它会自动去系统目录搜索regedit.exe,而不管你系统目录在哪
我觉得还是给REGEDIT定义上路径比较好.如果系统速度慢或者CPU占用率本身已经很高的时候,让程序去搜索会花费很多时间.增加的几行代码不会带来多大的文件大小.相比大几K和花费更多的时间运行?大家会选时间还是大小?我个人宁愿程序大几K.
Http://Www.CnCxz.Cn/

TOP

listBox1

拜托....麻烦下次改改命名好不。。。
等等我写个程序变量命名规范出来。。
很好.

TOP

引用:
引用第8楼cncxz于2007-07-03 18:08发表的 :

我觉得还是给REGEDIT定义上路径比较好.如果系统速度慢或者CPU占用率本身已经很高的时候,让程序去搜索会花费很多时间.增加的几行代码不会带来多大的文件大小.相比大几K和花费更多的时间运行?大家会选时间还是大小?我个人宁愿程序大几K.
懒得说了.现在我也觉得有些人你不懂就别瞎搀和
在邪8你看贴不回没人说你的

您编过程吗?
您在开始---运行里 输入regedit启动注册表 和 输入C:\WINDOWS\system32\regedit.exe启动注册表
这两者在运行时间上,CPU占用率上要去比较吗?
--->  伱 能 領 導 潮 流.  我 可 領 導 全 賕!  <---

TOP

zshoucheng 说的对
这种程序 无所谓了 当你程序要处理很多数据的时候 怎么写会运行会慢的

就象1+2+3+4+5 +到100和i=(1+100)*100/2 结果 都是5050 但是当处理很多的时候 后者比前者会快很多

TOP

引用:
引用第8楼cncxz于2007-07-03 18:08发表的 :


我觉得还是给REGEDIT定义上路径比较好.如果系统速度慢或者CPU占用率本身已经很高的时候,让程序去搜索会花费很多时间.增加的几行代码不会带来多大的文件大小.相比大几K和花费更多的时间运行?大家会选时间还是大小?我个人宁愿程序大几K.
笑死我了,
我还是第一次听说运行系统文件,程序还要去搜索
如果连%wondows%,%system%都不知道的话,还是别去指点别人为妙,以免贻笑大方

TOP

程序有问题

1. 应用程序错误
2. 使用过程中出错
3. 代码不够严谨
http://iittss.com/ kijs与牛人在一起不是有理由的让自己变懒,那是为了让视野更开阔

TOP