⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 filedispose.cpp

📁 此程序可以加密任何格式的文件
💻 CPP
字号:

#include "windows.h"
#include "FileDispose.h"
#include "richedit.h"
TCHAR buffer1[260]="0",buffer2[100]="0",szSearch[260]="0",szTemp[260]="0";
char starstar[]="*.*";
TCHAR szFont[]="宋体";
TCHAR FindString[]="查找结束!!!!   888";
char ENTER[]={13,10};
BOOL CALLBACK MainAbout(HWND,UINT,WPARAM,LPARAM);
BOOL CALLBACK FindAbout(HWND,UINT,WPARAM,LPARAM);
DWORD WINAPI MainFind(LPVOID);//查找文件
BOOL MainEncrypt();//加密处理
BOOL MainDecrypt();//解密处理
BOOL MainDelete();//删除处理
BOOL MainAdd();//增加处理
BOOL ErrorDispose(HWND);
char passwordlock[]={0xff,0x32,0x45,0x87,0x64,0x38,0x55,0x21,0x99,0x43,0xba,0x32,0x65,0x43,0x41,
0x22,0x2a,0x32,0x3b,0x3e,0x47,0x59,0x42,0x91,0x7f,0x5e,0x4a,0x42,0x01,0x1f,0x19,0x2c,0xac,0xae,0xaf,0xe1,0x43,0x76,0x43,0x48,0xbc,0xbb,0xe1,0xf1,
0x43,0x41,0x46,0xfc,0xff,0xcf};//密码阴锁
int flag=0;
HWND hDlg,FindHwnd;
HINSTANCE hInst;
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,PSTR szCmdLine,int iCmdShow)
{
	LoadLibrary("RichEd20.dll");
	hInst=hInstance;
	DialogBoxParam(hInstance,"MainAbout",NULL,MainAbout,0);   
	return 0;
}
BOOL CALLBACK MainAbout(HWND hwnd,UINT message,WPARAM wparam,LPARAM lparam)
{
	hDlg=hwnd;
	switch(message)
	{
	case WM_COMMAND:
		{
			switch(LOWORD(wparam))
			{
			case IDC_ENCRYPT:    //加密
				if(!ErrorDispose(hwnd))
					return 0;
				if(MainEncrypt())
					MessageBox(0,"加密完成","Ok",MB_OK);
				if(flag==0)
					MessageBox(0,"文件夹中不存在此文件","error",MB_OK);
				break;
			case IDC_DECRYPT: //解密
				if(!ErrorDispose(hwnd))
					return 0;
				if(MainDecrypt())
					MessageBox(0,"解密完成","OK",MB_OK);
                if(flag==0)
					MessageBox(0,"文件夹中不存在此文件","error",MB_OK);
				break;
			case IDC_DELETE:// 删除
				if(!ErrorDispose(hwnd))
					return 0;
				MainDelete();
                if(flag==0)
					MessageBox(0,"文件夹中不存在此文件","error",MB_OK);
				break;
			case IDC_FIND://查找
				if(!ErrorDispose(hwnd))
					return 0;
				DialogBoxParam(hInst,"FINDDIALOG",hwnd,FindAbout,0);
				flag=0;
				break;
			case IDC_ADD://增加文件
				if(!ErrorDispose(hwnd))
					return 0;
				MainAdd();
				break;
			}
		}
		return 1;
	case WM_CLOSE:
		EndDialog(hwnd,0);
		return 1;

	}
	return 0;
}
BOOL ErrorDispose(HWND hwnd)
{
	 if(!GetDlgItemText(hwnd,IDC_FOLDER,buffer1,sizeof(buffer1)/sizeof(TCHAR)))
	 {
		MessageBox(hDlg,"文件夹的内容不能为空","error",MB_OK);
		return 0;
	 }
	 if(!GetDlgItemText(hwnd,IDC_FILE,buffer2,sizeof(buffer2)/sizeof(TCHAR)))
	 {
		MessageBox(hDlg,"文件名的内容不能为空","error",MB_OK);
		return 0;
	 }
	flag=0;
	return 1;
}

BOOL MainEncrypt()//加密处理
{
	TCHAR szPath[260]="0";
	HANDLE findfile,hFile,hMemory;
    int len=0,i=0,j=0,k=0;
	DWORD writebyte;
	char *szBuffer;
	WIN32_FIND_DATA finddata;
	lstrcpy(szPath,buffer1);
	len=lstrlen(szPath);
	if(szPath[len-1]!=92)
	{
		szPath[len]=92;
	}
	lstrcpy(szSearch,szPath);
	lstrcat(szSearch,starstar);
	//MessageBox(0,szSearch,0,MB_OK);
	findfile=FindFirstFile(szSearch,&finddata);
	if(findfile==INVALID_HANDLE_VALUE)
	{
		return 0;
	}
	for(;;)
	{
		if(!FindNextFile(findfile,&finddata))
			break;
        if(buffer2[0]=='.')//如果等于点符
		{
			while(finddata.cFileName[k]!='.')
			{
				k++;
				if(finddata.cFileName[k]=='\0')
					break;
			}
			if(strcmp(&finddata.cFileName[k],buffer2)==0)//如果扩展同相等
			{
				lstrcpy(szTemp,szPath);
			    lstrcat(szTemp,finddata.cFileName);
                hFile=CreateFile(szTemp,GENERIC_READ | GENERIC_WRITE,FILE_SHARE_READ | FILE_SHARE_WRITE,0,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0);
			    len=GetFileSize(hFile,0);
			    hMemory=GlobalAlloc(GPTR,len);
			    szBuffer=(char *)GlobalLock(hMemory);
			    ReadFile(hFile,szBuffer,len,&writebyte,0);
			    for(i=0;i<len;i++)
				{
				   szBuffer[i]=szBuffer[i]+passwordlock[j];
				   j++;
				   if(j==50)
					  j=0;
				}
			   SetFilePointer(hFile,0,0,FILE_BEGIN);
			   WriteFile(hFile,szBuffer,len,&writebyte,0);
			   CloseHandle(hFile);
			   GlobalFree(hMemory);
               flag=1;
			}
			k=0;

		}
		if(strcmp(finddata.cFileName,buffer2)==0)  //如果文件名相同就加密
		{	
			lstrcpy(szTemp,szPath);
			lstrcat(szTemp,buffer2);
            hFile=CreateFile(szTemp,GENERIC_READ | GENERIC_WRITE,FILE_SHARE_READ | FILE_SHARE_WRITE,0,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0);
			if(hFile==INVALID_HANDLE_VALUE)
			{
				return 0;
			}
			len=GetFileSize(hFile,0);
			hMemory=GlobalAlloc(GPTR,len);
			szBuffer=(char *)GlobalLock(hMemory);
			ReadFile(hFile,szBuffer,len,&writebyte,0);
			for(i=0;i<len;i++)
			{
				szBuffer[i]=szBuffer[i]+passwordlock[j];
				j++;
				if(j==50)
					j=0;
			}
			SetFilePointer(hFile,0,0,FILE_BEGIN);
			WriteFile(hFile,szBuffer,len,&writebyte,0);
			CloseHandle(hFile);
			GlobalFree(hMemory);
			flag=1;
		}
		if(finddata.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
		{
			if(finddata.cFileName[0]!='.')
			{
				lstrcpy(buffer1,szPath);
				lstrcat(buffer1,finddata.cFileName);
				MainEncrypt();   //递归调用

			}
		}
	}
	FindClose(findfile);
	if(flag==0)
	    return 0;
	return TRUE;
}

BOOL MainDecrypt()//解密处理
{
	
    HANDLE findfile,hFile,hMemory;
    int len=0,i=0,j=0,k=0;
	DWORD writebyte;
	TCHAR szPath[260]="0";
	char *szBuffer;
	WIN32_FIND_DATA finddata;
	lstrcpy(szPath,buffer1);
	len=lstrlen(szPath);
	if(szPath[len-1]!=92)
	{
		szPath[len]=92;
	}
	lstrcpy(szSearch,szPath);
	lstrcat(szSearch,starstar);
//	MessageBox(0,szSearch,0,MB_OK);
	findfile=FindFirstFile(szSearch,&finddata);
	if(findfile==INVALID_HANDLE_VALUE)
	{
		return 0;
	}
	for(;;)
	{
		if(!FindNextFile(findfile,&finddata))
			break;
		if(buffer2[0]=='.')//如果等于点符
		{
			while(finddata.cFileName[k]!='.')
			{
				k++;
				if(finddata.cFileName[k]=='\0')
					break;
			}
			//MessageBox(0,&finddata.cFileName[k],0,MB_OK);
			if(strcmp(&finddata.cFileName[k],buffer2)==0)//如果扩展同相等
			{
				lstrcpy(szTemp,szPath);
			    lstrcat(szTemp,finddata.cFileName);
                hFile=CreateFile(szTemp,GENERIC_READ | GENERIC_WRITE,FILE_SHARE_READ | FILE_SHARE_WRITE,0,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0);
			    len=GetFileSize(hFile,0);
			    hMemory=GlobalAlloc(GPTR,len);
			    szBuffer=(char *)GlobalLock(hMemory);
			    ReadFile(hFile,szBuffer,len,&writebyte,0);
			    for(i=0;i<len;i++)
				{
				   szBuffer[i]=szBuffer[i]-passwordlock[j];
				   j++;
				   if(j==50)
					  j=0;
				}
			   SetFilePointer(hFile,0,0,FILE_BEGIN);
			   WriteFile(hFile,szBuffer,len,&writebyte,0);
			   CloseHandle(hFile);
			   GlobalFree(hMemory);
			   flag=1;
			}
			k=0;

		}
		if(strcmp(finddata.cFileName,buffer2)==0)  //如果文件名相同就解密
		{
			lstrcpy(szTemp,szPath);
			lstrcat(szTemp,buffer2);
            hFile=CreateFile(szTemp,GENERIC_READ | GENERIC_WRITE,FILE_SHARE_READ | FILE_SHARE_WRITE,0,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0);
			if(hFile==INVALID_HANDLE_VALUE)
			{
				//MessageBox(0,"打开文件失败!","error",MB_OK);
				return 0;
			}
			len=GetFileSize(hFile,0);
			hMemory=GlobalAlloc(GPTR,len);
			szBuffer=(char *)GlobalLock(hMemory);
            
			ReadFile(hFile,szBuffer,len,&writebyte,0);
			for(i=0;i<len;i++)
			{
				szBuffer[i]=szBuffer[i]-passwordlock[j];
				j++;
				if(j==50)
					j=0;
			}
			SetFilePointer(hFile,0,0,FILE_BEGIN);
			WriteFile(hFile,szBuffer,len,&writebyte,0);
			CloseHandle(hFile);
			GlobalFree(hMemory);
			flag=1;
		}
		if(finddata.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
		{
			if(finddata.cFileName[0]!='.')
			{
				lstrcpy(buffer1,szPath);
				lstrcat(buffer1,finddata.cFileName);
				MainDecrypt();   //递归调用

			}
		}
	}
	FindClose(findfile);
    if(flag==0)
		return 0;
	return TRUE;
   
}

BOOL MainDelete()//删除处理
{
	HANDLE findfile;
    int len=0;
	TCHAR szPath[260]="0";
	WIN32_FIND_DATA finddata;
	lstrcpy(szPath,buffer1);
	len=lstrlen(szPath);
	if(szPath[len-1]!=92)
	{
		szPath[len]=92;
	}
	lstrcpy(szSearch,szPath);
	lstrcat(szSearch,starstar);
//	MessageBox(0,szSearch,0,MB_OK);
	findfile=FindFirstFile(szSearch,&finddata);
	if(findfile==INVALID_HANDLE_VALUE)
		return 0;
	for(;;)
	{
		if(!FindNextFile(findfile,&finddata))
			break;
		if(strcmp(finddata.cFileName,buffer2)==0)  //如果文件名相同就加密
		{	
			lstrcpy(szTemp,szPath);
			lstrcat(szTemp,buffer2);
			if(!DeleteFile(szTemp))
			{
				MessageBox(0,"删除失败","error",MB_OK);
				return 0;
			}
			flag=1;
		}
		if(finddata.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
		{
			if(finddata.cFileName[0]!='.' && finddata.cFileName[0]!='..')
			{
				lstrcpy(buffer1,szPath);
				lstrcat(buffer1,finddata.cFileName);
				len=lstrlen(buffer1);
				MainDelete();   //递归调用
			}
		}
	}
	FindClose(findfile);
	if(flag==0)
		return 0;
	return TRUE;
}

DWORD WINAPI MainFind(LPVOID(n))//查找处理
{
    CHARRANGE stCR;
	HANDLE findfile;
	int len,k=0;
	TCHAR szPath[260]="0";
	WIN32_FIND_DATA finddata;
	lstrcpy(szPath,buffer1);
	len=lstrlen(szPath);
	if(szPath[len-1]!=92)
	{
		szPath[len]=92;
	}
	lstrcpy(szSearch,szPath);
	lstrcat(szSearch,starstar);
	findfile=FindFirstFile(szSearch,&finddata);
	if(findfile==INVALID_HANDLE_VALUE)
	{
		return 0;
	}
	for(;;)
	{
		if(!FindNextFile(findfile,&finddata))
		      break;
        
		if(strcmp(finddata.cFileName,buffer2)==0)  //如果文件名相同就
		{	
			lstrcpy(szTemp,szPath);
			lstrcat(szTemp,buffer2);
			lstrcat(szTemp,ENTER);
			len=GetWindowTextLength(FindHwnd);
			stCR.cpMin=len;
			stCR.cpMax=len;
			SendMessage(FindHwnd,EM_EXSETSEL,0,(long)&stCR);
			SendMessage(FindHwnd,EM_REPLACESEL,FALSE,(long)szTemp);
			flag=1;
		}
		if(finddata.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
		{
			if(finddata.cFileName[0]!='.')
			{
				lstrcpy(buffer1,szPath);
				lstrcat(buffer1,finddata.cFileName);
				MainFind(LPVOID(n)) ; //递归调用
			}
		}
       if(buffer2[0]=='.')//如果等于点符
		{
			while(finddata.cFileName[k]!='.')
			{
				k++;
				if(finddata.cFileName[k]=='\0')
					break;
			}
			if(strcmp(&finddata.cFileName[k],buffer2)==0)//如果扩展同相等
			{
				lstrcpy(szTemp,szPath);
			    lstrcat(szTemp,finddata.cFileName);
				lstrcat(szTemp,ENTER);
                len=GetWindowTextLength(FindHwnd);
			    stCR.cpMin=len;
			    stCR.cpMax=len;
			    SendMessage(FindHwnd,EM_EXSETSEL,0,(long)&stCR);
			    SendMessage(FindHwnd,EM_REPLACESEL,FALSE,(long)szTemp);
		     	flag=1;
			}
			k=0;
		}
	  
	}
	FindClose(findfile);
	if(flag==0)
		return 0;
	return TRUE;
	

}


BOOL CALLBACK FindAbout(HWND hwnd,UINT message,WPARAM wparam,LPARAM lparam)//  查找对话框
{
    CHARFORMAT stCF;
	DWORD id;
	HANDLE thread;
	int i=0;
	switch(message)
	{
	case WM_CLOSE:
		CloseHandle(thread);
		EndDialog(hwnd,0);
		break;
	case WM_INITDIALOG:
        FindHwnd=GetDlgItem(hwnd,IDC_INFO);
		
		SendMessage(FindHwnd,EM_SETTEXTMODE,TM_PLAINTEXT,0);
		RtlZeroMemory(&stCF,sizeof(stCF));
		stCF.cbSize=sizeof(stCF);
		stCF.yHeight=9*20;
		stCF.dwMask=CFM_FACE | CFM_SIZE | CFM_BOLD;
		lstrcpy(stCF.szFaceName,szFont);
		SendMessage(FindHwnd,EM_SETCHARFORMAT,0,(long)&stCF);
		SendMessage(FindHwnd,EM_EXLIMITTEXT,0,-1);
		thread=CreateThread(0,0,MainFind,(LPVOID)i,0,&id);//调用查找线程
		
		
		break;
	return TRUE;

	}
	return 0;
}


BOOL MainAdd() //增加文件
{
   if(!CopyFile(buffer1,buffer2,FALSE))
   {
	   MessageBox(0,"操作失败",0,MB_OK);
	   return 0;
   }
   return 1;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -