全盘文件搜索

来源:互联网 发布:win10 磁盘系统优化 编辑:程序博客网 时间:2024/05/09 05:46

老罗win32汇编例子修改

 

 

#include <windows.h>#include <process.h>//#include <objidl.h>#include "resource.h"#include "FindFile.h"#include "BrowseFolder.h"BOOL CALLBACK DialogProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam);void ProcThread (PVOID pvoid);HWND hWinMain;TCHARszPath[MAX_PATH];TCHARszSearchInfo[] = L"共找到 %d 个文件夹,%d 个文件,共 %I64dK 字节";bool all;int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd){DialogBoxParam (hInstance, MAKEINTRESOURCE(IDD_DIALOG), NULL, DialogProc, 0);return 0;}BOOL CALLBACK DialogProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam){static HWNDhwndOk;HANDLEhIcon;static TCHAR szBuffer[MAX_PATH];HINSTANCEhInstance;switch (message){case WM_INITDIALOG:hWinMain= hwnd;hwndOk= GetDlgItem (hwnd, IDOK);EnableWindow(hwndOk, false) ;SendDlgItemMessage (hwnd, IDC_EDIT, EM_SETLIMITTEXT,MAX_PATH,0);hInstance= GetModuleHandle (NULL); hIcon= LoadIcon (hInstance, MAKEINTRESOURCE (IDI_ICON) );SendMessage(hwnd,WM_SETICON,ICON_BIG, (LPARAM)hIcon);return true;case WM_COMMAND:switch (LOWORD(wParam) ){case IDOK:if (dwOption & F_SEARCHING)dwOption |= F_STOP;else{GetDlgItemText (hwnd, IDC_EDIT, szPath, MAX_PATH);_beginthread (ProcThread, 0, szPath) ;//启动线程函数}break;case IDC_ALL:all = true;EnableWindow(hwndOk, true) ;GetLogicalDriveStrings (sizeof (szPath), szPath);_beginthread (ProcThread, 0, szPath) ;//启动线程函数break;case IDC_BROWSE:if (BrowseFolder(hwnd, szPath) )SetDlgItemText(hwnd, IDC_EDIT, szPath);break;case IDC_PATH:MessageBox (hwnd, L"IDPATH",L"提示",MB_OK);break;case IDC_EDIT:int ch= GetDlgItemText (hwnd, IDC_EDIT, szBuffer, MAX_PATH);EnableWindow(hwndOk, ch) ;break;}return true;case WM_CLOSE:if( !(dwOption & F_SEARCHING) )EndDialog(hwnd,NULL);return true;}return false;}void ProcThread (PVOID pvoid){TCHARszBuffer[256];dwOption &=  ~F_STOP;dwOption |=  F_SEARCHING;EnableWindow (GetDlgItem (hWinMain, IDC_BROWSE), FALSE);EnableWindow (GetDlgItem (hWinMain, IDC_EDIT), FALSE);EnableWindow (GetDlgItem (hWinMain, IDC_ALL), FALSE);SetDlgItemText (hWinMain, IDOK, TEXT("停止") );if (all){TCHARDrive[4];for (int i=0; ; i += 4){if (szPath[i] == L'\0')break;lstrcpy (Drive, szPath);FindFile (&szPath[i]);}}elseFindFile (szPath);wsprintf (szBuffer, szSearchInfo, dwFolderCount,dwFileCount, dwFileSize / 1000);SetDlgItemText (hWinMain, IDC_PATH, szBuffer);EnableWindow (GetDlgItem (hWinMain, IDC_BROWSE), TRUE);EnableWindow (GetDlgItem (hWinMain, IDC_EDIT), TRUE);EnableWindow (GetDlgItem (hWinMain, IDC_ALL), TRUE);SetDlgItemText (hWinMain, IDOK, TEXT("开始") );SetDlgItemText (hWinMain,IDC_EDIT, szPath);dwOption &= ~F_SEARCHING;}


 

#ifndef BROWSEFOLDER_H#define BROWSEFOLDER_H#include <shlobj.h>TCHARszDirInfo[] = L"请选择目录:";TCHAR* BrowseFolderTmp;int CALLBACK BrowseFolderCallBack(HWND hwnd, UINT msg, LPARAM lParam, LPARAM lpData)//浏览对话框回调函数{TCHAR szBuffer[130];if (msg== BFFM_INITIALIZED)SendMessage (hwnd, BFFM_SETSELECTION, true, (LPARAM)BrowseFolderTmp);elseif (msg== BFFM_SELCHANGED){SHGetPathFromIDList ((LPCITEMIDLIST)lParam, szBuffer);SendMessage(hwnd,BFFM_SETSTATUSTEXT,0, (LPARAM)szBuffer);}return 0;}int BrowseFolder(HWND hwnd, TCHAR szBuffer[])//浏览对话框模块{BROWSEINFO  stBrowseInfo;IMalloc  *stMalloc;bool  dwReturn;LPCITEMIDLIST pidlParent;CoInitialize (NULL);if ( E_FAIL == SHGetMalloc (&stMalloc) ){CoUninitialize();return false;}RtlZeroMemory (&stBrowseInfo, sizeof (stBrowseInfo) );stBrowseInfo.hwndOwner= hwnd;BrowseFolderTmp= szBuffer;stBrowseInfo.lpfn= BrowseFolderCallBack;stBrowseInfo.lpszTitle= szDirInfo;stBrowseInfo.ulFlags= BIF_RETURNONLYFSDIRS | BIF_STATUSTEXT;if (NULL == ( pidlParent= SHBrowseForFolder (&stBrowseInfo) ))dwReturn= FALSE;else{dwReturn= TRUE;SHGetPathFromIDList (pidlParent, szBuffer);}stMalloc->Free ((void *)pidlParent);stMalloc->Release();CoUninitialize();return dwReturn;}#endif


 

#ifndef FINDFILE_H#define FINDFILE_H#define F_SEARCHING 1#define F_STOP2externHWND hWinMain;//主窗口句柄long long  dwFileSize;unsigned int dwFileCount;unsigned int dwFolderCount;int dwOption;void ProcessFile (TCHAR szFile[])//处理文件模块{HANDLE hFile;dwFileCount++;SetDlgItemText (hWinMain, IDC_PATH, szFile);if (INVALID_HANDLE_VALUE != (hFile = CreateFile (szFile, GENERIC_READ, FILE_SHARE_READ, 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0) ) )dwFileSize += GetFileSize (hFile, NULL);CloseHandle (hFile);}void FindFile (TCHAR szPath[])//目录搜索模块{HANDLEhFindFile;WIN32_FIND_DATA stFindFile;TCHAR szSearch[MAX_PATH];TCHAR szFindFile[MAX_PATH];int len = lstrlen (szPath);if (szPath[len-1] != L'\\'){szPath[len] =L'\\';szPath[len+1]= 0;}lstrcpy (szSearch, szPath);lstrcat (szSearch, TEXT("*.*") );bool res;if ( INVALID_HANDLE_VALUE != ( hFindFile = FindFirstFile (szSearch, &stFindFile ) ))do{lstrcpy (szFindFile, szPath);lstrcat (szFindFile, stFindFile.cFileName);if (stFindFile.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY){if ( stFindFile.cFileName[0] != L'.'  ){dwFolderCount++;FindFile(szFindFile);}}elseProcessFile( szFindFile);res= FindNextFile (hFindFile, &stFindFile);}while ( (res != FALSE) && !( dwOption & F_STOP));FindClose (hFindFile);}#endif


 

//{{NO_DEPENDENCIES}}// Microsoft Visual C++ generated include file.// Used by browse.rc//#define IDD_DIALOG1                     101#define IDD_DIALOG                      101#define IDI_ICON1                       102#define IDI_ICON                        102#define IDC_BROWSE                      1001#define IDC_EDIT                        1002#define IDC_PATH                        1003#define IDC_BUTTON1                     1004#define IDC_ALL                         1004// Next default values for new objects// #ifdef APSTUDIO_INVOKED#ifndef APSTUDIO_READONLY_SYMBOLS#define _APS_NEXT_RESOURCE_VALUE        103#define _APS_NEXT_COMMAND_VALUE         40001#define _APS_NEXT_CONTROL_VALUE         1005#define _APS_NEXT_SYMED_VALUE           101#endif#endif


 

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 车辆没有年检出了交通事故怎么办 跟着大货车闯了红灯怎么办 在万家金服买的电子产品坏了怎么办 汽车被油笔画了怎么办? 挂到别人车跑了怎么办 浪琴手表保修卡掉了怎么办 事故车辆维修和报废怎么办 4.2货车拉缸了怎么办 工作中与同事发生矛盾怎么办 和领导关系闹僵怎么办 内倒窗户卡住了怎么办 支付宝存在安全风险怎么办 地铁车站空调坏了怎么办 面试防汛值班发生灾情你怎么办 怀孕上班路途太远怎么办 硕士错过校招应该怎么办 收银员收多了钱怎么办 商铺贷款批不了怎么办 铁路局的门面乱收房租怎么办 酒店夜审房费多过怎么办 夜审房价录多了怎么办 做工地拿不到钱怎么办 赢了官司拿不到钱怎么办 工地上拿不到钱怎么办 做了工拿不到钱怎么办 高速公路上车没油了怎么办 高铁乘务员年龄大了怎么办 总公司跑路了分公司怎么办 坐车久了耳朵懵怎么办 过完隧道耳朵疼怎么办 护照还在大使馆需要出国怎么办 护照在大使馆不返回怎么办 美国面签迟到了怎么办 成都美签迟到了怎么办 签证电调没人接怎么办 单位没有抬头纸怎么办在职证明 出国签证无银行流水怎么办 铁路职工得癌症后工作怎么办 去泰国不会泰语和英语怎么办 签证状态一直没有更新怎么办 简理财不能身份信息确认怎么办