📄 filedispose.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 + -