📄 send_to_hd.c
字号:
szThisFolder[3]='\0'; SetCurrentDirectory(szThisFolder); szThisFolder[2]='\0'; } else SetCurrentDirectory(szThisFolder); do{ AddListview(GetDlgItem(hWnd,IDC_SELECTDEST),szSourceFile,i); AddFileType(szSourceFile); i++; }while(DoCheckCommand()); ListView_SetColumnWidth(GetDlgItem(hWnd,IDC_SELECTDEST),0,LVSCW_AUTOSIZE); if(szThisFolder[3]=='\0') szThisFolder[2]='\0'; FillSend(GetDlgItem(hWnd,IDC_SELECTSEND),NULL); RestoreCheckCommand();}void RestoreCheckCommand(void){ wsprintf(szRunCommand,szForCheck);}void FillSend(HWND hWnd,LPSTR szFileType){ HANDLE hFile; WIN32_FIND_DATA wfile; char s[MAX_PATH]; HIMAGELIST hIList; LV_FINDINFO lvf; HICON hicon1; LV_ITEM lvi; int i=0; BOOL bSpac=FALSE; char temp[80]; ZeroMemory(s,MAX_PATH); ZeroMemory(&lvf,sizeof(LV_FINDINFO)); lvf.flags=LVFI_STRING; if(szFileType!=NULL) { if(strcmpi(szFileType,"文件夹")==0 || strcmpi(szFileType,"无扩展名文件")==0) { wsprintf(s,"%s\\*.*",szThisFolder); bSpac=TRUE; } else wsprintf(s,"%s\\%s",szThisFolder,szFileType); } else wsprintf(s,"%s\\*.*",szThisFolder); if(szThisFolder[2]=='\0') { szThisFolder[2]='\\'; szThisFolder[3]='\0'; SetCurrentDirectory(szThisFolder); szThisFolder[2]='\0'; } else SetCurrentDirectory(szThisFolder); hIList = ImageList_Create(16,16,ILC_MASK,1,1);//GetSystemMetrics(SM_CXSMICON),GetSystemMetrics(SM_CYSMICON) hFile=FindFirstFile(s,&wfile); do { if(stricmp(wfile.cFileName,"..")==0 || stricmp(wfile.cFileName,".")==0) continue; if(bSpac) if(strcmpi(szFileType,"文件夹")==0) { if(!(wfile.dwFileAttributes&FILE_ATTRIBUTE_DIRECTORY)) continue; } else if(GetFileTypeName(wfile.cFileName,temp)!=TYPE_NOEXT) continue; if((wfile.dwFileAttributes&FILE_ATTRIBUTE_DIRECTORY)) {
char x[MAX_PATH];
wsprintf(x," %s",wfile.cFileName);
lvi.pszText = x;
}
else
lvi.pszText = wfile.cFileName;//LPSTR_TEXTCALLBACK; lvf.psz=(LPCTSTR)lvi.pszText; if(ListView_FindItem(GetDlgItem(hExternWnd,IDC_SELECTDEST),-1,&lvf)!=-1) continue; hicon1=GetFileIcon(wfile.cFileName); ImageList_AddIcon(hIList,hicon1); ListView_SetImageList(hWnd,hIList,LVSIL_SMALL); lvi.mask = LVIF_TEXT | LVIF_IMAGE | LVIF_PARAM | LVIF_STATE; lvi.state = 0;
lvi.stateMask = 0;
lvi.iItem = i;
lvi.iSubItem = 0;
lvi.cchTextMax = MAX_PATH;
lvi.iImage = i;
lvi.lParam = (LPARAM)&wfile;
i++;
ListView_InsertItem(hWnd,&lvi);
AddFileType(wfile.cFileName);
}while(FindNextFile(hFile,&wfile)); FindClose(hFile); ListView_SetColumnWidth(hWnd,0,LVSCW_AUTOSIZE);}#pragma argsusedLRESULT NotifyHandler( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
POINT pt;
LPNMHDR lphdr=(LPNMHDR)lParam;
LV_HITTESTINFO lvhti ;
switch(lphdr->code)
{
case NM_KILLFOCUS:
nFocused=-1;
break;
case NM_CLICK:
{
GetCursorPos( &pt) ;
ScreenToClient(lphdr->hwndFrom, &pt) ;
lvhti.pt=pt;
ListView_HitTest(lphdr->hwndFrom, &lvhti) ;
if(lvhti.flags & LVHT_ONITEM)
{
if((HIBYTE(GetKeyState(VK_SHIFT))&1) && nFocused!=-1)
{
int i,j=ListView_GetItemCount(lphdr->hwndFrom);
BOOL bIn=FALSE;
for(i=0;i<j;i++)
{
if(i!=nFocused && i!=lvhti.iItem)
{
if(bIn)
{
ListView_SetItemState(lphdr->hwndFrom,i,LVIS_DROPHILITED,LVIF_STATE);
}
else
ListView_SetItemState(lphdr->hwndFrom,i,0,LVIF_STATE);
}
else
{
ListView_SetItemState(lphdr->hwndFrom,i,LVIS_DROPHILITED,LVIF_STATE);
bIn=!bIn;
if(nFocused==lvhti.iItem)
bIn=FALSE;
}
}
}
else
{
if((ListView_GetItemState(lphdr->hwndFrom,lvhti.iItem,LVIF_STATE)&LVIS_DROPHILITED))
{
ListView_SetItemState(lphdr->hwndFrom,lvhti.iItem,0,LVIF_STATE);
}
else
{
ListView_SetItemState(lphdr->hwndFrom,lvhti.iItem,LVIS_DROPHILITED,LVIF_STATE);
}
nFocused=lvhti.iItem;
}
}
}
break;
}
return 0L;
}void InitCol(HWND hWnd){ LV_COLUMN lvC; lvC.mask = LVCF_FMT | LVCF_WIDTH | LVCF_TEXT | LVCF_SUBITEM; lvC.fmt = LVCFMT_LEFT; // 列元左对齐
lvC.cx = 86; // 列元的像素宽度
lvC.pszText = "File";//szText; // 列元的文字字符串地址
lvC.iSubItem = 0;
ListView_InsertColumn(hWnd,0,&lvC);}void AddListview(HWND hWnd,LPSTR szDisplay,int i){ WIN32_FIND_DATA wfile; HIMAGELIST hIList; HICON hicon1; LV_ITEM lvi; if(szDisplay[0]==' ') { int w=0; while(szDisplay[w+1]!='\0') { szDisplay[w]=szDisplay[w+1]; w++; } szDisplay[w]='\0'; } FindFirstFile(szDisplay,&wfile); hIList = ListView_GetImageList(hWnd,LVSIL_SMALL); if(hIList==NULL) hIList=ImageList_Create(16,16,ILC_MASK,1,1); hicon1=GetFileIcon(szDisplay);//,&dwtemp);//wfile.cFileName,0); ImageList_AddIcon(hIList,hicon1); ListView_SetImageList(hWnd,hIList,LVSIL_SMALL);// DestroyIcon(hicon1); lvi.mask = LVIF_TEXT | LVIF_IMAGE | LVIF_PARAM | LVIF_STATE; lvi.state = 0;
lvi.stateMask = 0;
lvi.iItem = i;
lvi.iSubItem = 0;
if((wfile.dwFileAttributes&FILE_ATTRIBUTE_DIRECTORY))
{
char x[MAX_PATH];
wsprintf(x," %s",wfile.cFileName);
lvi.pszText = x;
}
else
lvi.pszText = wfile.cFileName;//LPSTR_TEXTCALLBACK;
lvi.cchTextMax = MAX_PATH;
lvi.iImage = ImageList_GetImageCount(hIList)-1;
lvi.lParam = (LPARAM)&wfile;
ListView_InsertItem(hWnd,&lvi);
ListView_SetColumnWidth(hWnd,0,LVSCW_AUTOSIZE);}void AddFileType(LPSTR s){ char sztype[80]; int i,j,k=0;
char str[80];
if((GetFileAttributes(s)&FILE_ATTRIBUTE_DIRECTORY))
wsprintf(sztype,"文件夹");
else
GetFileTypeName(s,sztype);
if(sztype[0]=='\0') wsprintf(sztype,"无扩展名文件"); j=SendMessage(hTypeWnd,CB_GETCOUNT,0,0); for(i=0;i<j;i++) { SendMessage(hTypeWnd,CB_GETLBTEXT,i,(LPARAM)str); if(strcmpi(str,sztype)==0) { k++; break; } } if(k==0) SendMessage(hTypeWnd,CB_ADDSTRING,0,(LPARAM)sztype);}void DoSend(void){ char s[MAX_PATH],d[MAX_PATH]; SHFILEOPSTRUCT shop; BOOL bnouse=FALSE; WIN32_FIND_DATA wfile,wdest; char dst[MAX_PATH]; HANDLE h;//,hFile; HWND hDest=GetDlgItem(hExternWnd,IDC_SELECTDEST); int i,k,j=ListView_GetItemCount(hDest),c=0,l; char szSend[MAX_PATH]; if(j==0) return; shop.hwnd=hMainWnd; shop.wFunc=dofileop.uOp; if(dofileop.bNoAsk) shop.fFlags=FOF_NOCONFIRMATION; else shop.fFlags=FOF_ALLOWUNDO; shop.fAnyOperationsAborted=bnouse; shop.hNameMappings=NULL; shop.lpszProgressTitle=NULL; ZeroMemory(d,MAX_PATH); GetDlgItemText(hExternWnd,IDC_DESTFOLDER,d,MAX_PATH); if(strlen(d)>0) if(d[strlen(d)-1]=='\\') d[strlen(d)-1]='\0'; MkDir(d); shop.pTo=d; ZeroMemory(s,MAX_PATH); for(i=0;i<j;i++) { ZeroMemory(szSend,MAX_PATH); ListView_GetItemText(hDest,i,0,szSend,MAX_PATH); if(szSend[0]==' ') { for(k=0;k<(int)(strlen(szSend)-1);k++) szSend[k]=szSend[k+1]; szSend[k]='\0'; }/* if(dofileop.bNoFolder) { if(GetFileAttributes(szSend)==FILE_ATTRIBUTE_DIRECTORY) { ZeroMemory(s,MAX_PATH); wsprintf(s,"%s\\*.*",szSend); SetCurrentDirectory(szSend); hFile=FindFirstFile(s,&wfile); while(FindNextFile(hFile,&wfile)) { if(stricmp(wfile.cFileName,"..")==0) continue; ZeroMemory(s,MAX_PATH); wsprintf(s,"%s\\",szSend); strcat(s,wfile.cFileName); shop.pFrom=s; if(dofileop.bUpdate) { wsprintf(dst,"%s\\%s",shop.pTo,wfile.cFileName); if((h=FindFirstFile(dst,&wdest))!=INVALID_HANDLE_VALUE) { if(memcmp(&wfile.ftLastWriteTime,&wdest.ftLastWriteTime,sizeof(FILETIME))!=0 || wfile.nFileSizeHigh!=wdest.nFileSizeHigh || wfile.nFileSizeLow!=wdest.nFileSizeLow)
SHFileOperation(&shop);
}
else
SHFileOperation(&shop);
FindClose(h);
}
else
SHFileOperation(&shop); } FindClose(hFile); continue; } }*/ if((strlen(szSend)+c)<MAX_PATH-4) { if(dofileop.bUpdate) { wsprintf(dst,"%s\\%s",shop.pTo,szSend); if((h=FindFirstFile(dst,&wdest))!=INVALID_HANDLE_VALUE) { if(memcmp(&wfile.ftLastWriteTime,&wdest.ftLastWriteTime,sizeof(FILETIME))==0 && wfile.nFileSizeHigh==wdest.nFileSizeHigh && wfile.nFileSizeLow==wdest.nFileSizeLow)
{
FindClose(h);
continue;//SHFileOperation(&shop);
}
}
else
{
FindClose(h);
continue;
}
FindClose(h);
}
for(l=0;l<(int)strlen(szSend);l++) { s[c]=szSend[l]; c++; } s[c]='\0'; c++; continue; } else { s[c]='\0'; shop.pFrom=s; SHFileOperation(&shop); ZeroMemory(s,MAX_PATH); c=0; for(l=0;l<(int)strlen(szSend);l++) { s[c]=szSend[l]; c++; } s[c]='\0'; c++; continue; } } s[c]='\0'; shop.pFrom=s; SHFileOperation(&shop);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -