全盘文件搜索
来源:互联网 发布: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
- 全盘文件搜索
- 全盘搜索文件
- 批处理全盘高速搜索文件!
- 批处理全盘高速搜索文件
- windows环境下全盘搜索特定文件
- 全盘搜索程序
- linux 全盘搜索
- C++ 按关键字搜索文件夹中的文件 & 全盘符搜索文件
- 全盘的文件遍历
- 批处理全盘搜索指定文件获取其完整路径(部分)
- 批处理(bat)实现全盘搜索指定文件获取其完整路径方法大全
- 【CBM666 的全盘文件查找】
- Everything原理及全盘搜索研究
- 电脑全盘搜索软件 Everything 强烈推荐
- 好用的全盘搜索软件Everything
- 使用java进行本地文件全盘搜索
- Intallshield 如何遍历全盘与更新文件
- unity3D 扫描全盘获取文件路径
- 牵手
- office 2007全屏查看的方法汇总
- Android中的IME
- 基于html5 websocket API简单实现断点上传文件
- github入门及日常使用操作命令(附两个错误及解决办法)
- 全盘文件搜索
- windows AND Ubuntu MongoDB安装及简单使用
- cookie有什么用?怎么使用?
- Ryzom - Compile
- Google 2013校园招聘算法题
- Session概述
- 发光二极管之三——结构图
- 实现tomcat启动时自动运行代码
- windows2003下apache配置虚拟主机和绑定域名服务 .