From 1b14ad7858aca70f5bbbd8f09f8f0e1f844da03f Mon Sep 17 00:00:00 2001 From: KondeU <370242479@qq.com> Date: Sun, 15 Aug 2021 22:43:20 +0800 Subject: [PATCH 01/13] =?UTF-8?q?v3=E5=88=9D=E5=A7=8B=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Desc: v3初始化,从v2迁移过来,重新采用CMake进行构建,修复编译出现的问题,代码文件编码格式问题,源码转为UTF-8,rc转为Unicode。 Type: Feature Link: NA --- AutoDiskCopier_v3/.gitignore | 2 + AutoDiskCopier_v3/CMakeLists.txt | 12 + AutoDiskCopier_v3/build.bat | 30 ++ AutoDiskCopier_v3/src/ADC_Main.bmp | Bin 0 -> 270054 bytes AutoDiskCopier_v3/src/AutoDiskCopier.cpp | 263 +++++++++++ AutoDiskCopier_v3/src/AutoDiskCopier.h | 381 ++++++++++++++++ AutoDiskCopier_v3/src/AutoDiskCopier.rc | Bin 0 -> 11308 bytes AutoDiskCopier_v3/src/CmnDlg.h | 307 +++++++++++++ AutoDiskCopier_v3/src/MD5.h | 531 +++++++++++++++++++++++ AutoDiskCopier_v3/src/NotifyIcon.h | 169 ++++++++ AutoDiskCopier_v3/src/Removable.ico | Bin 0 -> 17542 bytes AutoDiskCopier_v3/src/resource.h | 33 ++ 12 files changed, 1728 insertions(+) create mode 100644 AutoDiskCopier_v3/.gitignore create mode 100644 AutoDiskCopier_v3/CMakeLists.txt create mode 100644 AutoDiskCopier_v3/build.bat create mode 100644 AutoDiskCopier_v3/src/ADC_Main.bmp create mode 100644 AutoDiskCopier_v3/src/AutoDiskCopier.cpp create mode 100644 AutoDiskCopier_v3/src/AutoDiskCopier.h create mode 100644 AutoDiskCopier_v3/src/AutoDiskCopier.rc create mode 100644 AutoDiskCopier_v3/src/CmnDlg.h create mode 100644 AutoDiskCopier_v3/src/MD5.h create mode 100644 AutoDiskCopier_v3/src/NotifyIcon.h create mode 100644 AutoDiskCopier_v3/src/Removable.ico create mode 100644 AutoDiskCopier_v3/src/resource.h diff --git a/AutoDiskCopier_v3/.gitignore b/AutoDiskCopier_v3/.gitignore new file mode 100644 index 0000000..ac462d3 --- /dev/null +++ b/AutoDiskCopier_v3/.gitignore @@ -0,0 +1,2 @@ +build +*.aps diff --git a/AutoDiskCopier_v3/CMakeLists.txt b/AutoDiskCopier_v3/CMakeLists.txt new file mode 100644 index 0000000..e78da75 --- /dev/null +++ b/AutoDiskCopier_v3/CMakeLists.txt @@ -0,0 +1,12 @@ +cmake_minimum_required(VERSION 3.10) +project(AutoDiskCopier) + +set(CMAKE_CXX_STANDARD 14) +set(CMAKE_CXX_STANDARD_REQUIRED ON) +set(CMAKE_CXX_EXTENSIONS OFF) + +file(GLOB_RECURSE INC src/*.h) +file(GLOB_RECURSE SRC src/*.cpp) +file(GLOB_RECURSE RES src/*.rc) + +add_executable(AutoDiskCopier WIN32 ${SRC} ${INC} ${RES}) diff --git a/AutoDiskCopier_v3/build.bat b/AutoDiskCopier_v3/build.bat new file mode 100644 index 0000000..8028c4c --- /dev/null +++ b/AutoDiskCopier_v3/build.bat @@ -0,0 +1,30 @@ +cd %~dp0 + +set BUILD_BITS=%1 +set BUILD_TYPE=%2 +set BUILD_COMPILE=%3 + +rem script params: build.bat [BUILD_BITS] [BUILD_TYPE] [BUILD_COMPILE] +rem default value: BUILD_BITS=x86 BUILD_TYPE=Release BUILD_COMPILE=VS2015 + +if "%BUILD_TYPE%"=="" (set BUILD_TYPE=Release) +if "%BUILD_COMPILE%"=="" (set BUILD_COMPILE=VS2015) + +if "%BUILD_COMPILE%"=="VS2015" (set BUILD_COMPILE=Visual Studio 14 2015) +if "%BUILD_COMPILE%"=="VS2017" (set BUILD_COMPILE=Visual Studio 15 2017) +if "%BUILD_COMPILE%"=="VS2019" (set BUILD_COMPILE=Visual Studio 16 2019) + +rem only VS2019 uses "BUILD_ARCH_ARG" +set BUILD_ARCH_ARG= +if "%BUILD_COMPILE%"=="Visual Studio 16 2019" ( +if "%BUILD_BITS%"=="x64" (set BUILD_ARCH_ARG=-A x64) ^ +else (set BUILD_ARCH_ARG=-A Win32) +) else ( +if "%BUILD_BITS%"=="x64" (set BUILD_COMPILE=%BUILD_COMPILE% Win64) +) + +mkdir build +cd build +cmake -G "%BUILD_COMPILE%" %BUILD_ARCH_ARG% .. +cmake --build . --config %BUILD_TYPE% -j 8 +cd .. diff --git a/AutoDiskCopier_v3/src/ADC_Main.bmp b/AutoDiskCopier_v3/src/ADC_Main.bmp new file mode 100644 index 0000000000000000000000000000000000000000..2517359309fb1188a060de97b0c86b59fab088aa GIT binary patch literal 270054 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%0A}JV)9OL!by$drpW<%b4+s zDw0+7%DMT@TC(XYc}ciRcuT|Fb+k*Ile64N@w=3QPw{q{9(#PSi(9Q|QR5$i@inBKiq;+!njYKeUX&e(K%ZC<`s+p8so0p|j+Y{{{gEcGpW|VwjtX2nS9TZJAPZRl^32vRen?b&ZtiEm)7R z)rzoLL|`TbS0~lcJKI}KH~2wkiE1mBCCg6ZQYChqtJ+=`c01m!b?fB=1izcFSEM-d z9T6PL)vh%%SMt)BFj$v;fVEZkt>*!GF5NGIqBFjn%3AVE-F(ZoT3TksV^Nag zG#7CDy%=w26|-g6q`@L_-K4sm;}p76yi+?-d6jgEo^;8V7zT2et{qXExL=K^R;_tD zYL~qB8IiTpC=o`GyGvZqsS3ql>v1Wg9rX&Qr3%GJd%J1lQRHeYMOa|+@<|Bzn$e0X z>%T1fE*ZBIi>>IDrWBc7vRs5ht2Z01@p5M=FMK#?(`+^laLwqNCbRwYEhMaw7N;%NG`dhHC8l4caws&7+kXEv&xk2${)w()&}je zNw>;iAt2`Iv5=2|2f3F>JmoUWoh~tV_1KzJ2Jc=XnC?wv0Cx4#MM_-mtuJ5R_$NZ0 zq1sEtBH&H+itz=JT&U3{UkaUIy z;?*shjC_hb4r=XSeb`ce7aE;UNWcXrR?fE{pZz2=v%D`3%@=Jf z{!Q9`@nDL0%!MU4^=(pfzY?^P*F|2I!{l#SJQqm>BM^8D0>1ZkkjTdBA^aKy z9#Y#&Qi1oXGV68m`d-y(o8xV6UY;y%2tYst+AW#F?r#7!_y&#gru9(AKYyDOlqS#Z zE#b+D7oqLie(jpNuitn)xCl3lK;Qugly}p)D}UFas|54A!swQDhqjkn)$Q53-d$(yRHY9$(4yA+pr?QuAHU0uAXR;!b?x|zJQEYlaD5w| z?lH5zjo(4xu5sx~^}0r=*nC<7`~QsTzKy}Tq)(Z3s`#Bk~H z#U_Sc*@)`)+MdytFb3Qv?}M8lTy^ke>vh#oF%AI;JQ4xd)gvh9;Jwd9ZfB2FJ92>l z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV= z5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHaf zKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_ z009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz z00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_< z0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb V2tWV=5P$##AOHafK;Xy({tvMnFERiC literal 0 HcmV?d00001 diff --git a/AutoDiskCopier_v3/src/AutoDiskCopier.cpp b/AutoDiskCopier_v3/src/AutoDiskCopier.cpp new file mode 100644 index 0000000..f726bc0 --- /dev/null +++ b/AutoDiskCopier_v3/src/AutoDiskCopier.cpp @@ -0,0 +1,263 @@ +#include"AutoDiskCopier.h" + +#pragma comment(linker, \ + "/manifestdependency:\"" \ + "type='win32' " \ + "name='Microsoft.Windows.Common-Controls' " \ + "version='6.0.0.0' " \ + "processorArchitecture='*' " \ + "publicKeyToken='6595b64144ccf1df' " \ + "language='*'\"") + +static const TCHAR szAppNameEng[] = TEXT("AutoDiskCopier"); +static const TCHAR szAppNameChn[] = TEXT("自动磁盘拷贝器"); + +LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam); +BOOL CALLBACK DlgProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam); + + +INT WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, INT iCmdShow) +{ + //--- Create a no show window to get other msg. ---// + + HWND hwnd; + MSG msg; + WNDCLASS wndclass; + memset(&hwnd, 0, sizeof(HWND)); + memset(&msg, 0, sizeof(MSG)); + memset(&wndclass, 0, sizeof(WNDCLASS)); + + wndclass.style = CS_HREDRAW | CS_VREDRAW; + wndclass.lpfnWndProc = WndProc; + wndclass.cbClsExtra = 0; + wndclass.cbWndExtra = 0; + wndclass.hInstance = hInstance; + wndclass.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_ICON)); + wndclass.hCursor = LoadCursor(NULL, IDC_ARROW); + wndclass.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH); + wndclass.lpszMenuName = NULL; + wndclass.lpszClassName = szAppNameEng; + + if (!RegisterClass(&wndclass)) + { + MessageBox(NULL, TEXT("错误:主窗口类注册失败,该应用程序最低版本限制为WindowsNT!"), szAppNameChn, MB_ICONERROR | MB_OK); + return 0; + } + + hwnd = CreateWindow( + szAppNameEng, szAppNameChn, WS_OVERLAPPED | WS_CAPTION | WS_THICKFRAME, + 0, 0, 0, 0, GetDesktopWindow(), NULL, hInstance, NULL); + + //--- Program init. ---// + + //Accel. + + HACCEL hAccel = LoadAccelerators(hInstance, MAKEINTRESOURCE(IDR_ACCELERATOR)); + + //--- Message loop. ---// + + while (GetMessage(&msg, NULL, 0, 0)) + { + if (TranslateAccelerator(hwnd, hAccel, &msg)) + { + continue; + } + TranslateMessage(&msg); + DispatchMessage(&msg); + } + + //--- Program end. ---// + + return msg.wParam; +} + + +LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) +{ + static CAutoDiskCopier adc(hwnd); + + static HWND hDlgMain = NULL; + + switch (message) + { + + case WM_CREATE: + + hDlgMain = CreateDialogParam( + ((CREATESTRUCT*)lParam)->hInstance, MAKEINTRESOURCE(IDD_DIALOG), + hwnd, DlgProc, (LPARAM)(&adc)); + + //热键启动(Control + Alt + Shift + U) + RegisterHotKey(hwnd, 0, MOD_CONTROL | MOD_ALT | MOD_SHIFT, 'U'); + + //托盘图标 + adc.m_ni.SetTip(TEXT("AutoDiskCopier_pre\nBeta2,Ver2.15.11.24")); + adc.m_ni.SetIcon(((CREATESTRUCT*)lParam)->hInstance, MAKEINTRESOURCE(IDI_ICON)); + + if (adc.m_bEnableNotifyIcon) + { + adc.m_ni.AddNotificationIcon(); + } + + return 0; + + + case WM_COMMAND: + + switch (LOWORD(wParam)) + { + case IDR_ACCELERATOR_HIDE: + SendMessage(hDlgMain, WM_COMMAND, wParam, lParam); + } + break; + + case WM_HOTKEY: + + ShowWindow(hDlgMain, SW_NORMAL); + return 0; + + + case WM_NOTIFYICON: + + if (wParam == IDI_ICON && lParam == WM_RBUTTONDBLCLK) + { + adc.m_ni.DeleteNotificationIcon(); + ShowWindow(hDlgMain, SW_SHOWNORMAL); + } + break; + + + case WM_DEVICECHANGE: + + if ((DBT_DEVICEARRIVAL != wParam) || + (DBT_DEVTYP_VOLUME != ((PDEV_BROADCAST_HDR)lParam)->dbch_devicetype)) + { + //忽略设备安装不成功或非逻辑磁盘的消息 + return BROADCAST_QUERY_DENY; + } + else + { + DWORD dwDiskMask = ((PDEV_BROADCAST_VOLUME)lParam)->dbcv_unitmask; + UINT uiPos = 0; + TCHAR szCopyDiskPath[4]; + + for (uiPos = 0; !(dwDiskMask & 1); uiPos++) + { + dwDiskMask >>= 1; + } + + if (uiPos >= 26) + { + //磁盘盘符超标 + return BROADCAST_QUERY_DENY; + } + else + { + wsprintf(szCopyDiskPath, TEXT("%c%s"), 'A' + uiPos, TEXT(":\\")); + } + + adc.Copying(szCopyDiskPath); + + return TRUE; + } + + + case WM_DESTROY: + + PostQuitMessage(0); + return 0; + } + + return DefWindowProc(hwnd, message, wParam, lParam); +} + + +BOOL CALLBACK DlgProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) +{ + static CAutoDiskCopier * padc; + + switch (message) + { + case WM_INITDIALOG: + padc = (CAutoDiskCopier *)lParam; + padc->SetDlgInfo(hDlg); + padc->m_bfdlg.SetOwnerWindow(hDlg); + padc->m_osdlg.SetOwnerWindow(hDlg); + padc->m_osdlg.SetFilter(2, TEXT("签名文件(*.key)"), TEXT("*.key"), TEXT("所有文件(*.*)"), TEXT("*.*")); + padc->m_osdlg.SetDefExt(TEXT("key")); + return TRUE; + + case WM_COMMAND: + switch (LOWORD(wParam)) + { + case IDCANCEL: + case IDC_BTN_HIDE: + case IDR_ACCELERATOR_HIDE: + ShowWindow(hDlg, SW_HIDE); + if (padc->m_bEnableNotifyIcon) + { + padc->m_ni.AddNotificationIcon(); + } + return TRUE; + + case IDC_BTN_QUIT: + SendMessage(GetParent(hDlg), WM_DESTROY, 0, 0); + return TRUE; + + case IDC_BTN_SAVESETTING: + padc->GetDlgInfo(hDlg); + padc->SaveSetting(hDlg); + padc->RegisterAutorun();// + return TRUE; + + case IDC_BTN_BROWSECOPYFILEPATH: + if (padc->m_bfdlg.CmmDlgBrowse()) + { + TCHAR szPath[MAX_PATH]; + wsprintf(szPath, TEXT("%s%s"), padc->m_bfdlg.GetDir(), TEXT("\\")); + SetDlgItemText(hDlg, IDC_EDIT_COPYFILEPATH, szPath); + } + return TRUE; + + case IDC_BTN_CREATEKEYFILE: + if(padc->m_osdlg.CmnDlgSaveFile()) + { + HANDLE hFile = CreateFile(padc->m_osdlg.GetFilePath(), GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); + if (INVALID_HANDLE_VALUE == hFile) + { + MessageBox(hDlg, TEXT("生成签名文件失败!"), TEXT("ADC - 签名"), MB_ICONERROR); + } + else + { + int iRand[2]; + char szMD5[33]; + for (UINT ui = 0; ui < 2; ui++) + { + srand(GetTickCount()); + iRand[ui] = rand(); + + padc->m_md5.CalcMD5((void *)(&iRand[ui]), sizeof(int)); + padc->m_md5.GetMD5(szMD5); + padc->m_md5.Reset(); + + DWORD dwWrited; + WriteFile(hFile, szMD5, 32 * sizeof(char), &dwWrited, NULL); + } + + CloseHandle(hFile); + MessageBox(hDlg, TEXT("已生成签名文件。"), TEXT("ADC - 签名"), MB_OK); + } + } + return TRUE; + + case IDC_BTN_BROWSEKEYFILEPATH: + if (padc->m_osdlg.CmnDlgOpenFile()) + { + SetDlgItemText(hDlg, IDC_EDIT_KEYFILEPATH, padc->m_osdlg.GetFilePath()); + } + return TRUE; + + } + } + return FALSE; +} diff --git a/AutoDiskCopier_v3/src/AutoDiskCopier.h b/AutoDiskCopier_v3/src/AutoDiskCopier.h new file mode 100644 index 0000000..ef73974 --- /dev/null +++ b/AutoDiskCopier_v3/src/AutoDiskCopier.h @@ -0,0 +1,381 @@ +#pragma once + +#define _CRT_SECURE_NO_WARNINGS + +#include +#include +#include + +#include +#pragma comment(lib, "shlwapi.lib") + +#include +#pragma comment(lib, "shell32.lib") + +#include +#pragma comment(lib, "imagehlp.lib") + +#include"resource.h" + +#include"CmnDlg.h" +#include"NotifyIcon.h" +#include"MD5.h" + +using namespace COMMONDIALOG; +using namespace NOTIFYICON; +using namespace MD5; + +#define WM_NOTIFYICON (WM_USER + 1) + + +class CAutoDiskCopier +{ +public: + + CMD5 m_md5; + COSDlg m_osdlg; + CBrowseFolderDlg m_bfdlg; + CNotifyIcon m_ni; + + char m_szSettingFilePath[MAX_PATH]; + + bool m_bEnableNotifyIcon; + bool m_bMD5Check; + bool m_bPopupConfirmDialog; + bool m_bAutorun; + + TCHAR m_szCopyFileSavePath[MAX_PATH]; + + bool m_bCheckKeyFile; + TCHAR m_szKey[MAX_PATH]; + + CAutoDiskCopier(HWND hwnd) : m_md5(), m_osdlg(NULL), m_bfdlg(NULL), m_ni(hwnd, IDI_ICON, WM_NOTIFYICON, false) + { + SHGetSpecialFolderPathA(hwnd, m_szSettingFilePath, 26/*“C:/Program Files”*/, TRUE); + + sprintf(m_szSettingFilePath, "%s%s", m_szSettingFilePath, "\\AutoDiskCopier\\Setting\\"); + MakeSureDirectoryPathExists(m_szSettingFilePath); + sprintf(m_szSettingFilePath, "%s%s", m_szSettingFilePath, "ADC_Setting.set"); + + HANDLE hFile = CreateFileA(m_szSettingFilePath, GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); + + if (INVALID_HANDLE_VALUE == hFile) + { + //打开配置文件失败 -> 初始化 + + hFile = CreateFileA(m_szSettingFilePath, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); + if (INVALID_HANDLE_VALUE == hFile) + { + //初始化失败 -> 程序退出 + + MessageBox(NULL, TEXT("程序初始化失败!\n创建配置文件失败!"), TEXT("ADC - 初始化错误"), MB_ICONERROR); + PostQuitMessage(GetLastError()); + } + else + { + //初始化成功 + + SHGetSpecialFolderPath(hwnd, m_szCopyFileSavePath, 26/*“C:/Program Files”*/, TRUE); + wsprintf(m_szCopyFileSavePath, TEXT("%s%s"), m_szCopyFileSavePath, TEXT("\\AutoDiskCopier\\CopiedFiles\\")); + CreateDirectory(m_szCopyFileSavePath, NULL); + + m_bEnableNotifyIcon = true; + m_bAutorun = false; + m_bPopupConfirmDialog = true; + m_bMD5Check = false; + + m_bCheckKeyFile = false; + wsprintf(m_szKey, TEXT("")); + + DWORD dwWrited = 0; + WriteFile(hFile, &m_bEnableNotifyIcon, sizeof(bool), &dwWrited, NULL); + WriteFile(hFile, &m_bAutorun, sizeof(bool), &dwWrited, NULL); + WriteFile(hFile, &m_bPopupConfirmDialog, sizeof(bool), &dwWrited, NULL); + WriteFile(hFile, &m_bMD5Check, sizeof(bool), &dwWrited, NULL); + WriteFile(hFile, &m_bCheckKeyFile, sizeof(bool), &dwWrited, NULL); + WriteFile(hFile, m_szCopyFileSavePath, MAX_PATH * sizeof(TCHAR), &dwWrited, NULL); + WriteFile(hFile, m_szKey, MAX_PATH * sizeof(TCHAR), &dwWrited, NULL); + + CloseHandle(hFile); + + MessageBox(NULL, TEXT("程序初始化完成。"), TEXT("ADC - 初始化完成"), MB_OK); + } + } + else + { + //打开配置文件成功 + + DWORD dwReaded = 0; + ReadFile(hFile, &m_bEnableNotifyIcon, sizeof(bool), &dwReaded, NULL); + ReadFile(hFile, &m_bAutorun, sizeof(bool), &dwReaded, NULL); + ReadFile(hFile, &m_bPopupConfirmDialog, sizeof(bool), &dwReaded, NULL); + ReadFile(hFile, &m_bMD5Check, sizeof(bool), &dwReaded, NULL); + ReadFile(hFile, &m_bCheckKeyFile, sizeof(bool), &dwReaded, NULL); + ReadFile(hFile, m_szCopyFileSavePath, MAX_PATH * sizeof(TCHAR), &dwReaded, NULL); + ReadFile(hFile, m_szKey, MAX_PATH * sizeof(TCHAR), &dwReaded, NULL); + CloseHandle(hFile); + } + } + + void Copying(PCTSTR szCopyDiskPath) + { + if (m_bPopupConfirmDialog) + { + if (IDYES != MessageBox(NULL, TEXT("已检测到磁盘接入,是否执行复制?"), TEXT("ADC - 确认复制"), MB_YESNO)) + { + return; + } + } + + /*_beginthread(&(CAutoDiskCopier::CopyingThread), 0, (void *)szCopyDiskPath);*/ + CopyingThread(szCopyDiskPath); // + } + + void SetDlgInfo(HWND hwnd) + { + CheckDlgButton(hwnd, IDC_CHCK_SHOWNOTIFYICON, m_bEnableNotifyIcon ? BST_CHECKED : BST_UNCHECKED); + CheckDlgButton(hwnd, IDC_CHCK_MD5, m_bMD5Check ? BST_CHECKED : BST_UNCHECKED); + CheckDlgButton(hwnd, IDC_CHCK_CONFIRMDIALOG, m_bPopupConfirmDialog ? BST_CHECKED : BST_UNCHECKED); + CheckDlgButton(hwnd, IDC_CHCK_AUTORUN, m_bAutorun ? BST_CHECKED : BST_UNCHECKED); + + SetDlgItemText(hwnd, IDC_EDIT_COPYFILEPATH, m_szCopyFileSavePath); + + CheckDlgButton(hwnd, IDC_CHCK_CHECKKEY, m_bCheckKeyFile ? BST_CHECKED : BST_UNCHECKED); + SetDlgItemText(hwnd, IDC_EDIT_KEYFILEPATH, m_szKey); + } + + void GetDlgInfo(HWND hwnd) + { + m_bEnableNotifyIcon = (BST_CHECKED == IsDlgButtonChecked(hwnd, IDC_CHCK_SHOWNOTIFYICON)) ? true : false; + m_bMD5Check = (BST_CHECKED == IsDlgButtonChecked(hwnd, IDC_CHCK_MD5)) ? true : false; + m_bPopupConfirmDialog = (BST_CHECKED == IsDlgButtonChecked(hwnd, IDC_CHCK_CONFIRMDIALOG)) ? true : false; + m_bAutorun = (BST_CHECKED == IsDlgButtonChecked(hwnd, IDC_CHCK_AUTORUN)) ? true : false; + + GetDlgItemText(hwnd, IDC_EDIT_COPYFILEPATH, m_szCopyFileSavePath, MAX_PATH); + + m_bCheckKeyFile = (BST_CHECKED == IsDlgButtonChecked(hwnd, IDC_CHCK_CHECKKEY)) ? true : false; + GetDlgItemText(hwnd, IDC_EDIT_KEYFILEPATH, m_szKey, MAX_PATH); + } + + void SaveSetting(HWND hwnd) + { + HANDLE hFile = CreateFileA(m_szSettingFilePath, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); + + if (INVALID_HANDLE_VALUE == hFile) + { + MessageBox(hwnd, TEXT("保存设置失败!"), TEXT("ADC - 保存设置"), MB_ICONERROR); + } + else + { + DWORD dwWrited = 0; + WriteFile(hFile, &m_bEnableNotifyIcon, sizeof(bool), &dwWrited, NULL); + WriteFile(hFile, &m_bAutorun, sizeof(bool), &dwWrited, NULL); + WriteFile(hFile, &m_bPopupConfirmDialog, sizeof(bool), &dwWrited, NULL); + WriteFile(hFile, &m_bMD5Check, sizeof(bool), &dwWrited, NULL); + WriteFile(hFile, &m_bCheckKeyFile, sizeof(bool), &dwWrited, NULL); + WriteFile(hFile, m_szCopyFileSavePath, MAX_PATH * sizeof(TCHAR), &dwWrited, NULL); + WriteFile(hFile, m_szKey, MAX_PATH * sizeof(TCHAR), &dwWrited, NULL); + + CloseHandle(hFile); + + MessageBox(hwnd, TEXT("保存设置成功!"), TEXT("ADC - 保存设置"), MB_OK); + } + } + + void RegisterAutorun() + { + TCHAR szFilePath[MAX_PATH]; + GetModuleFileName(NULL, szFilePath, MAX_PATH); + // + HKEY hReg; + RegOpenKey(HKEY_LOCAL_MACHINE, TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\Run"), &hReg); + if (m_bAutorun) + { + RegSetValue(hReg, TEXT("AutoDiskCopier_pre"), REG_SZ, szFilePath, (lstrlen(szFilePath) + 1) * sizeof(TCHAR)); + } + else + { + RegDeleteKey(hReg, TEXT("AutoDiskCopier_pre")); + } + RegCloseKey(hReg); + } + + +private: + + void CopyingThread(PCTSTR szCopyDiskPath) + { + if ((m_bCheckKeyFile) && + (1 == this->CheckIsKeyFileSame(szCopyDiskPath, m_szKey))) + { + //检测:开关打开;存在不进行复制命令的Key文件 + return; + } + + //获得电脑当地当前时间以建立相关文件夹 + SYSTEMTIME st; + TCHAR szSavePath[MAX_PATH] = { 0 }; + wsprintf(szSavePath, m_szCopyFileSavePath); + GetLocalTime(&st); + wsprintf( szSavePath, TEXT("%s%d年"), szSavePath, st.wYear ); + wsprintf( szSavePath, TEXT("%s%d月"), szSavePath, st.wMonth ); + wsprintf( szSavePath, TEXT("%s%d日"), szSavePath, st.wDay ); + wsprintf( szSavePath, TEXT("%s%d时"), szSavePath, st.wHour ); + wsprintf( szSavePath, TEXT("%s%d分"), szSavePath, st.wMinute ); + wsprintf( szSavePath, TEXT("%s%d秒\\"), szSavePath, st.wSecond ); + if (!CreateDirectory(szSavePath, NULL)) + { + SHGetSpecialFolderPath(NULL, szSavePath, 26/*“C:/Program Files”*/, TRUE); + wsprintf(szSavePath, TEXT("%s%s"), szSavePath, TEXT("\\AutoDiskCopier\\CopiedFiles\\")); + GetLocalTime(&st); + wsprintf( szSavePath, TEXT("%s%d年"), szSavePath, st.wYear ); + wsprintf( szSavePath, TEXT("%s%d月"), szSavePath, st.wMonth ); + wsprintf( szSavePath, TEXT("%s%d日"), szSavePath, st.wDay ); + wsprintf( szSavePath, TEXT("%s%d时"), szSavePath, st.wHour ); + wsprintf( szSavePath, TEXT("%s%d分"), szSavePath, st.wMinute ); + wsprintf( szSavePath, TEXT("%s%d秒\\"), szSavePath, st.wSecond ); + CreateDirectory(szSavePath, NULL); + } + + //复制文件 + Copy(szSavePath, szCopyDiskPath); + + /*_endthread();*/ + } + + int CheckIsKeyFileSame(PCTSTR szCopyDiskPath, PCTSTR szKeyFilePath) + { + TCHAR szDiskPath [260] = { 0 }; + TCHAR szKeyFileName [260] = { 0 }; + wsprintf(szDiskPath, TEXT("%s%s"), szCopyDiskPath, TEXT("*")); + wsprintf(szKeyFileName, PathFindFileName(szKeyFilePath)); + + WIN32_FIND_DATA wfd; + HANDLE hFindFile = FindFirstFile(szDiskPath, &wfd); + + if (INVALID_HANDLE_VALUE == hFindFile) + { + return -1; + } + + do + { + if (!lstrcmp(wfd.cFileName, szKeyFileName)) + { + TCHAR szCheckFile[MAX_PATH] = { 0 }; + wsprintf(szCheckFile, TEXT("%s%s"), szCopyDiskPath, szKeyFileName); + + HANDLE hFileCheck = CreateFile(szCheckFile, GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); + HANDLE hFileKey = CreateFile(szKeyFilePath, GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); + + if ((INVALID_HANDLE_VALUE == hFileCheck) || (INVALID_HANDLE_VALUE == hFileKey)) + { + return -1; + } + + BYTE byCheck [64] = { 0 }; + BYTE byKey [64] = { 0 }; + DWORD dwReaded = 0; + + ReadFile(hFileCheck, byCheck, 64, &dwReaded, NULL); + ReadFile(hFileKey, byKey, 64, &dwReaded, NULL); + + for (UINT ui = 0; ui < 64; ui++) + { + if (byCheck[ui] != byKey[ui]) + { + CloseHandle(hFileCheck); + CloseHandle(hFileKey); + + return 0; + } + } + + CloseHandle(hFileCheck); + CloseHandle(hFileKey); + + return 1; + } + } + while (FindNextFile(hFindFile, &wfd)); + + return 0; + } + + void Copy(PCTSTR szStorePath, PCTSTR szResourcePath) + { + TCHAR szFileStorePath[MAX_PATH]; //目标存储位置路径 C:\A.D.C.\CopiedFiles\DIRECTORY\.... + TCHAR szFileResourcePath[MAX_PATH]; //源文件位置路径 U:\DIRECTORY\.... + TCHAR szFileRsrcSrchPath[MAX_PATH]; //源文件位置路径搜索 U:\* + + lstrcpy(szFileStorePath, szStorePath); //获取目标存储位置路径 + lstrcpy(szFileResourcePath, szResourcePath); //获取源文件位置路径 + wsprintf(szFileRsrcSrchPath, TEXT("%s%s"), szFileResourcePath, TEXT("*")); //设置目标存储位置路径搜索 + + HANDLE hFindFile = NULL; + WIN32_FIND_DATA wfd; + + TCHAR szBuffer[MAX_PATH]; + + if ((hFindFile = FindFirstFile(szFileRsrcSrchPath, &wfd)) == INVALID_HANDLE_VALUE) + { + return; + } + + do + { + if ((lstrcmp(wfd.cFileName, TEXT(".")) && lstrcmp(wfd.cFileName, TEXT("..")))) + { + wsprintf(szBuffer, TEXT("%s%s"), szFileResourcePath, wfd.cFileName); + + if (wfd.dwFileAttributes == FILE_ATTRIBUTE_DIRECTORY) + { + wsprintf(szFileRsrcSrchPath, TEXT("%s\\"), szBuffer); + wsprintf(szFileStorePath, TEXT("%s%s\\"), szFileStorePath, wfd.cFileName); + CreateDirectory(szFileStorePath, NULL); + Copy(szFileStorePath, szFileRsrcSrchPath); + } + else + { + lstrcat(szFileStorePath, wfd.cFileName); + + for (UINT ui = 0; ui < 3; ui++) + { + CopyFile(szBuffer, szFileStorePath, FALSE); + + if (m_bMD5Check) + { + //MD5文件校验 - 此处有Unicode和Ansi的冲突,需要处理BUG + char szOrgnMD5[33] = { 0 }; + char szDestMD5[33] = { 0 }; + m_md5.CalcMD5(szBuffer, true); + m_md5.GetMD5(szOrgnMD5); + m_md5.Reset(); + m_md5.CalcMD5(szFileStorePath, true); + m_md5.GetMD5(szDestMD5); + m_md5.Reset(); + if (!strcmp(szOrgnMD5, szDestMD5)) + { + break; + } + } + else + { + break; + } + } + } + } + + lstrcpy(szFileStorePath, szStorePath); + lstrcpy(szFileResourcePath, szResourcePath); + wsprintf(szFileRsrcSrchPath, TEXT("%s%s"), szFileResourcePath, TEXT("*")); + } + while (FindNextFile(hFindFile, &wfd)); + + FindClose(hFindFile); + + return; + } + +}; diff --git a/AutoDiskCopier_v3/src/AutoDiskCopier.rc b/AutoDiskCopier_v3/src/AutoDiskCopier.rc new file mode 100644 index 0000000000000000000000000000000000000000..90fb93b9588ef218b76e4e412aa86cf677db66e3 GIT binary patch literal 11308 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 y+ub>diXYWmRNw3t + +namespace COMMONDIALOG +{ + class COSDlg + { + + public: + + COSDlg(HWND hOwnerWnd); + ~COSDlg(); + + inline void SetOwnerWindow(HWND hwnd); + + void SetTitle(LPCTSTR szTitle = nullptr); + void SetFilter(UINT uiExtCount, ...); + void SetDefExt(const TCHAR szDefExt[4] = nullptr); + + inline const TCHAR * GetFilePath() const; + inline DWORD GetFilterIndex() const; + inline WORD GetFileNameOffset() const; + inline WORD GetFileExtOffset() const; + + inline BOOL CmnDlgOpenFile(); + inline BOOL CmnDlgSaveFile(); + + private: + + OPENFILENAME m_ofn; + + TCHAR * m_szFilter; + TCHAR * m_szTitle; + TCHAR * m_szDefExt; + TCHAR m_szFilePath [MAX_PATH]; + + }; + + class CBrowseFolderDlg + { + + public: + + CBrowseFolderDlg::CBrowseFolderDlg(HWND hOwnerWnd); + + inline void SetOwnerWindow(HWND hwnd); + + inline bool CmmDlgBrowse(); + + inline const TCHAR * GetDir() const; + + private: + + BROWSEINFO m_bi; + + TCHAR m_szSelectDir[MAX_PATH]; + TCHAR m_szTitle[64]; + + }; + + + + //COSDlg实现: + + COSDlg::COSDlg(HWND hOwnerWnd) +{ + m_szFilter = nullptr; + m_szTitle = nullptr; + m_szDefExt = nullptr; + memset(m_szFilePath, 0, sizeof(m_szFilePath)); + + //--------------------- 初始化ofn ---------------------// + + memset(&m_ofn, 0, sizeof(OPENFILENAME)); + m_ofn.lStructSize = sizeof(OPENFILENAME); + + //---------- 使用的参数 ----------// + + m_ofn.hwndOwner = hOwnerWnd; //[in]------打开、保存对话框父窗口 + m_ofn.Flags = 0; //[in]------功能选择子(在函数中具体设置) + m_ofn.lpstrTitle = nullptr; //[in]------打开、保存对话框窗口标题栏字符串(独立函数设置) + m_ofn.lpstrFilter = nullptr; //[in]------筛选器字符串(独立函数设置) + m_ofn.nFilterIndex = 0; //[in/out]--控件中当前选择的筛选器的索引 + m_ofn.lpstrFile = m_szFilePath; //[in/out]--控件当前获取的文件及其路径 + m_ofn.nMaxFile = MAX_PATH; //[in]------ofn.lpstrFile的最大字符个数 + m_ofn.lpstrDefExt = nullptr; //[in]------默认扩展名(独立函数设置) + m_ofn.nFileOffset = 0; //[out]-----从路径开始到文件名的偏移字符个数 + m_ofn.nFileExtension = 0; //[out]-----从路径开始到文件名的扩展名的偏移字符个数 + + //--------- 未启用的参数 ---------// + + m_ofn.hInstance = NULL; //[in]---对话框模板对象实例句柄 + m_ofn.lpTemplateName = nullptr; //[in]---对话框模板资源的名字 + m_ofn.lpstrCustomFilter = nullptr; //[out]--定制筛选器缓冲区指针 + m_ofn.nMaxCustFilter = 0; //[in]---ofn.lpstrCustomFilter的最大字符个数 + m_ofn.lpstrTitle = nullptr; //[out]--控件当前获取的文件的文件名 + m_ofn.nMaxFileTitle = 0; //[in]---ofn.lpstrTitle的最大字符个数 + m_ofn.lpstrInitialDir = nullptr; //[in]---打开、保存对话框的初始目录 + m_ofn.lpfnHook = nullptr; //[in]---钩子函数 + m_ofn.lCustData = 0; //[in]---传递到钩子函数的数据 +} + + COSDlg::~COSDlg() + { + if (m_szFilter) + { + delete [] m_szFilter; + m_szFilter = nullptr; + } + + if (m_szTitle) + { + delete [] m_szTitle; + m_szTitle = nullptr; + } + + if (m_szDefExt) + { + delete [] m_szDefExt; + m_szDefExt = nullptr; + } + } + + inline void COSDlg::SetOwnerWindow(HWND hwnd) + { + m_ofn.hwndOwner = hwnd; + } + + void COSDlg::SetTitle(LPCTSTR szTitle) + { + if (m_szTitle) + { + delete [] m_szTitle; + } + + if (szTitle) + { + m_szTitle = new TCHAR [lstrlen(szTitle) + 1]; + lstrcpy(m_szTitle, szTitle); + } + else + { + m_szTitle = nullptr; + } + + m_ofn.lpstrTitle = m_szTitle; + } + + void COSDlg::SetFilter(UINT uiExtCount, ...) + { + if (m_szFilter) + { + delete [] m_szFilter; + } + + if (!uiExtCount) + { + m_szFilter = nullptr; + m_ofn.lpstrFilter = m_szFilter; + return; + } + + UINT uiTotalStringLen = 0; + TCHAR ** pszFilterPart = new TCHAR * [2 * uiExtCount]; + + va_list arg_ptr; + va_start(arg_ptr, uiExtCount); + + for (UINT ui = 0; ui < 2 * uiExtCount; ui++) + { + pszFilterPart[ui] = va_arg(arg_ptr, TCHAR *); + uiTotalStringLen += lstrlen(pszFilterPart[ui]) + 1; + } + uiTotalStringLen++; + + va_end(arg_ptr); + + m_szFilter = new TCHAR [uiTotalStringLen]; + memset(m_szFilter, '\0', uiTotalStringLen * sizeof(TCHAR)); + + TCHAR * pPos = &m_szFilter[0]; + for (UINT ui = 0; ui < 2 * uiExtCount; ui++) + { + lstrcat(pPos, pszFilterPart[ui]); + pPos += lstrlen(pszFilterPart[ui]) + 1; + } + + m_ofn.lpstrFilter = m_szFilter; + } + + void COSDlg::SetDefExt(const TCHAR szDefExt[4]) + { + if (szDefExt) + { + if (!m_szDefExt) + { + m_szDefExt = new TCHAR [4]; + } + lstrcpy(m_szDefExt, szDefExt); + } + else + { + if (m_szDefExt) + { + delete [] m_szDefExt; + m_szDefExt = nullptr; + } + } + + m_ofn.lpstrDefExt = m_szDefExt; + } + + inline const TCHAR * COSDlg::GetFilePath() const + { + return m_szFilePath; + } + + inline DWORD COSDlg::GetFilterIndex() const + { + return m_ofn.nFilterIndex; + } + + inline WORD COSDlg::GetFileNameOffset() const + { + return m_ofn.nFileOffset; + } + + inline WORD COSDlg::GetFileExtOffset() const + { + return m_ofn.nFileExtension; + } + + inline BOOL COSDlg::CmnDlgOpenFile() + { + m_ofn.Flags = OFN_EXPLORER | OFN_HIDEREADONLY | OFN_FILEMUSTEXIST; + return GetOpenFileName(&m_ofn); + } + + inline BOOL COSDlg::CmnDlgSaveFile() + { + m_ofn.Flags = OFN_EXPLORER | OFN_CREATEPROMPT | OFN_OVERWRITEPROMPT; + return GetSaveFileName(&m_ofn); + } + + + + //CBrowseFolderDlg实现: + + CBrowseFolderDlg::CBrowseFolderDlg(HWND hOwnerWnd) + { + m_bi.hwndOwner = hOwnerWnd; + m_bi.pidlRoot = NULL; + m_bi.pszDisplayName = m_szSelectDir; + m_bi.lpszTitle = m_szTitle; + m_bi.ulFlags = /*BIF_RETURNONLYFSDIRS*/0; + + m_bi.lpfn = NULL; + m_bi.lParam = 0; + m_bi.iImage = 0; + + wsprintf(m_szTitle, TEXT("选择文件夹:")); + } + + inline void CBrowseFolderDlg::SetOwnerWindow(HWND hwnd) + { + m_bi.hwndOwner = hwnd; + } + + inline bool CBrowseFolderDlg::CmmDlgBrowse() + { + LPITEMIDLIST pItemIDList = SHBrowseForFolder(&m_bi); + + if (!pItemIDList) + { + return false; + } + + if (!SHGetPathFromIDList(pItemIDList, m_szSelectDir)) + { + //获取文件夹信息失败 + //MessageBox(NULL, TEXT("获取文件夹信息失败!"), TEXT("错误"), MB_ICONERROR); + } + + //使用IMalloc接口防止内存泄漏 + IMalloc * pMalloc; + if (NOERROR != SHGetMalloc(&pMalloc)) + { + //未返回有效的IMalloc接口指针,无法取得外壳程序的IMalloc接口 + //MessageBox(NULL, TEXT("释放接口指针失败!"), TEXT("错误"), MB_ICONERROR); + } + + pMalloc->Free(pItemIDList); + + if (pMalloc) + { + pMalloc->Release(); + } + + return true; + } + + inline const TCHAR * CBrowseFolderDlg::GetDir() const + { + return m_szSelectDir; + } +} diff --git a/AutoDiskCopier_v3/src/MD5.h b/AutoDiskCopier_v3/src/MD5.h new file mode 100644 index 0000000..6b676d7 --- /dev/null +++ b/AutoDiskCopier_v3/src/MD5.h @@ -0,0 +1,531 @@ +#pragma once + +#define _CRT_SECURE_NO_WARNINGS + +#include + +namespace MD5 +{ + typedef unsigned int uint; + typedef unsigned char uint8; + typedef unsigned long uint32; + typedef unsigned long long uint64; + + + class CMD5 + { + + public: + + CMD5( + uint32 ui32MD5ChainingA = 0x67452301ul, //标准幻数A:(01234567)hex + uint32 ui32MD5ChainingB = 0xEFCDAB89ul, //标准幻数B:(89ABCDEF)hex + uint32 ui32MD5ChainingC = 0x98BADCFEul, //标准幻数C:(FEDCBA98)hex + uint32 ui32MD5ChainingD = 0x10325476ul //标准幻数D:(76543210)hex + ); + + //重置数据 + inline void Reset(); + + //获取MD5值 + inline char * GetMD5(char * szMD5) const; + + //MD5:字节流 + void CalcMD5(const void * pvDataStream, uint32 ui32DataBytes); + //MD5:字符串 + void CalcMD5(const char * szString); + //MD5:文件 + void CalcMD5(const char * szFilePath, bool bIsBinary); + + private: + + static const uint msk_uiMD5TransformShiftMatrix[4][4]; //MD5变换移位矩阵 + static const uint32 msk_ui32MD5TransformAddMatrix[4][16]; //MD5变换增量矩阵 + + static const uint8 msk_ui8MD5PaddingArray[64]; //MD5拓展长度数组 + + uint32 m_ui32MD5ChainingA; //MD5链接变量A + uint32 m_ui32MD5ChainingB; //MD5链接变量B + uint32 m_ui32MD5ChainingC; //MD5链接变量C + uint32 m_ui32MD5ChainingD; //MD5链接变量D + + uint32 m_ui32State[4]; //MD5算法当前计算状态值 + + uint32 m_ui32ByteCounts[2]; //数据总字节数 + + uint8 m_ui8InputBuffer[64]; //输入缓冲区 + + char m_szMD5[33]; //MD5计算结果 + + bool m_bResetFlag; //复位标志 + + inline void Uint32to8(uint8 * pui8Output, const uint32 * pui32Input, uint uiInputByteCounts) const; + inline void Uint8to32(uint32 * pui32Output, const uint8 * pui8Input, uint uiInputByteCounts) const; + + inline uint32 F(const uint32 x, const uint32 y, const uint32 z) const; + inline uint32 G(const uint32 x, const uint32 y, const uint32 z) const; + inline uint32 H(const uint32 x, const uint32 y, const uint32 z) const; + inline uint32 I(const uint32 x, const uint32 y, const uint32 z) const; + + inline uint32 RotateLeft(const uint32 x, const uint uiShiftCount) const; + + inline void FF(uint32 & a, uint32 b, uint32 c, uint32 d, uint32 x, uint s, uint32 ac); + inline void GG(uint32 & a, uint32 b, uint32 c, uint32 d, uint32 x, uint s, uint32 ac); + inline void HH(uint32 & a, uint32 b, uint32 c, uint32 d, uint32 x, uint s, uint32 ac); + inline void II(uint32 & a, uint32 b, uint32 c, uint32 d, uint32 x, uint s, uint32 ac); + + void Transform(const uint8 ui8Block[64]); + + void Update(const uint8 * pui8Input, uint32 ui32InputBytes); + + void Calculate(); + + }; + + //初始化MD5变换移位矩阵 + const uint CMD5::msk_uiMD5TransformShiftMatrix[4][4] = + { + {7, 12, 17, 22}, + {5, 9, 14, 20}, + {4, 11, 16, 23}, + {6, 10, 15, 21} + }; + + //初始化MD5变换增量矩阵 + const uint32 CMD5::msk_ui32MD5TransformAddMatrix[4][16] = + { + /* + loop i=1..64 : 4294967296 * abs(sin(i)) + 4294967296 = 2^32 + */ + + { + 0xD76AA478, //0xd76aa478 + 0xE8C7B756, //0xe8c7b756 + 0x242070DB, //0x242070db + 0xC1BDCEEE, //0xc1bdceee + 0xF57C0FAF, //0xf57c0faf + 0x4787C62A, //0x4787c62a + 0xA8304613, //0xa8304613 + 0xFD469501, //0xfd469501 + 0x698098D8, //0x698098d8 + 0x8B44F7AF, //0x8b44f7af + 0xFFFF5BB1, //0xffff5bb1 + 0x895CD7BE, //0x895cd7be + 0x6B901122, //0x6b901122 + 0xFD987193, //0xfd987193 + 0xA679438E, //0xa679438e + 0x49B40821 //0x49b40821 + }, + + { + 0xF61E2562, //0xf61e2562 + 0xC040B340, //0xc040b340 + 0x265E5A51, //0x265e5a51 + 0xE9B6C7AA, //0xe9b6c7aa + 0xD62F105D, //0xd62f105d + 0x02441453, //0x02441453 + 0xD8A1E681, //0xd8a1e681 + 0xE7D3FBC8, //0xe7d3fbc8 + 0x21E1CDE6, //0x21e1cde6 + 0xC33707D6, //0xc33707d6 + 0xF4D50D87, //0xf4d50d87 + 0x455A14ED, //0x455a14ed + 0xA9E3E905, //0xa9e3e905 + 0xFCEFA3F8, //0xfcefa3f8 + 0x676F02D9, //0x676f02d9 + 0x8D2A4C8A //0x8d2a4c8a + }, + + { + 0xFFFA3942, //0xfffa3942 + 0x8771F681, //0x8771f681 + 0x6D9D6122, //0x6d9d6122 + 0xFDE5380C, //0xfde5380c + 0xA4BEEA44, //0xa4beea44 + 0x4BDECFA9, //0x4bdecfa9 + 0xF6BB4B60, //0xf6bb4b60 + 0xBEBFBC70, //0xbebfbc70 + 0x289B7EC6, //0x289b7ec6 + 0xEAA127FA, //0xeaa127fa + 0xD4EF3085, //0xd4ef3085 + 0x04881D05, //0x04881d05 + 0xD9D4D039, //0xd9d4d039 + 0xE6DB99E5, //0xe6db99e5 + 0x1FA27CF8, //0x1fa27cf8 + 0xC4AC5665 //0xc4ac5665 + }, + + { + 0xF4292244, //0xf4292244 + 0x432AFF97, //0x432aff97 + 0xAB9423A7, //0xab9423a7 + 0xFC93A039, //0xfc93a039 + 0x655B59C3, //0x655b59c3 + 0x8F0CCC92, //0x8f0ccc92 + 0xFFEFF47D, //0xffeff47d + 0x85845DD1, //0x85845dd1 + 0x6FA87E4F, //0x6fa87e4f + 0xFE2CE6E0, //0xfe2ce6e0 + 0xA3014314, //0xa3014314 + 0x4E0811A1, //0x4e0811a1 + 0xF7537E82, //0xf7537e82 + 0xBD3AF235, //0xbd3af235 + 0x2AD7D2BB, //0x2ad7d2bb + 0xEB86D391 //0xeb86d391 + } + }; + + //初始化MD5拓展长度数组 + const uint8 CMD5::msk_ui8MD5PaddingArray[64] = { 0x80 }; + + + //CMD5实现: + + CMD5::CMD5(uint32 ui32MD5ChainingA, uint32 ui32MD5ChainingB, uint32 ui32MD5ChainingC, uint32 ui32MD5ChainingD) + { + m_ui32MD5ChainingA = ui32MD5ChainingA; + m_ui32MD5ChainingB = ui32MD5ChainingB; + m_ui32MD5ChainingC = ui32MD5ChainingC; + m_ui32MD5ChainingD = ui32MD5ChainingD; + + this->Reset(); + } + + inline void CMD5::Reset() + { + m_bResetFlag = true; + + m_ui32State[0] = m_ui32MD5ChainingA; + m_ui32State[1] = m_ui32MD5ChainingB; + m_ui32State[2] = m_ui32MD5ChainingC; + m_ui32State[3] = m_ui32MD5ChainingD; + + memset(m_ui32ByteCounts, 0, sizeof(uint32) * 2); + + memset(m_ui8InputBuffer, 0, sizeof(uint8) * 64); + + memset(m_szMD5, 0, sizeof(char) * 33); + + return; + } + + inline char * CMD5::GetMD5(char * szMD5) const + { + strcpy(szMD5, m_szMD5); + return szMD5; + } + + void CMD5::CalcMD5(const void * pvDataStream, uint32 ui32DataBytes) + { + if (false == m_bResetFlag) + { + return; + } + else + { + m_bResetFlag = false; + } + + this->Update((uint8 *)(pvDataStream), ui32DataBytes); + this->Calculate(); + + return; + } + + void CMD5::CalcMD5(const char * szString) + { + if (false == m_bResetFlag) + { + return; + } + else + { + m_bResetFlag = false; + } + + this->Update((uint8 *)(szString), strlen(szString)); + this->Calculate(); + + return; + } + + void CMD5::CalcMD5(const char * szFilePath, bool bIsBinary) + { + if (false == m_bResetFlag) + { + return; + } + else + { + m_bResetFlag = false; + } + + std::ifstream fin(szFilePath, bIsBinary ? (std::ios::binary) : (std::ios_base::in)); + + if (!fin) + { + return; + } + + std::streamsize ReadBytes = 0; + char cReadBuffer[1024] = { 0 }; + + while (!fin.eof()) + { + fin.read(cReadBuffer, 1024); + ReadBytes = fin.gcount(); + if (ReadBytes > 0) + { + //streamsize-->uint32可能丢失数据,限制缓冲区大小为1024bytes + this->Update((uint8 *)cReadBuffer, MD5::uint32(ReadBytes)); + } + } + + fin.close(); + + this->Calculate(); + + return; + } + + inline void CMD5::Uint32to8(uint8 * pui8Output, const uint32 * pui32Input, uint uiInputByteCounts) const + { + for (uint uiInputPos = 0, uiOutputPos = 0; uiOutputPos < uiInputByteCounts; uiInputPos++) + { + pui8Output[uiOutputPos++] = (uint8)((pui32Input[uiInputPos]) & 0xFF); + pui8Output[uiOutputPos++] = (uint8)((pui32Input[uiInputPos] >> 8) & 0xFF); + pui8Output[uiOutputPos++] = (uint8)((pui32Input[uiInputPos] >> 16) & 0xFF); + pui8Output[uiOutputPos++] = (uint8)((pui32Input[uiInputPos] >> 24) & 0xFF); + } + + return; + } + + inline void CMD5::Uint8to32(uint32 * pui32Output, const uint8 * pui8Input, uint uiInputByteCounts) const + { + for (uint uiInputPos = 0, uiOutputPos = 0; uiInputPos < uiInputByteCounts; uiOutputPos++) + { + pui32Output[uiOutputPos] = (uint32)(pui8Input[uiInputPos++]); + pui32Output[uiOutputPos] |= (uint32)(pui8Input[uiInputPos++]) << 8; + pui32Output[uiOutputPos] |= (uint32)(pui8Input[uiInputPos++]) << 16; + pui32Output[uiOutputPos] |= (uint32)(pui8Input[uiInputPos++]) << 24; + } + + return; + } + + inline uint32 CMD5::F(const uint32 x, const uint32 y, const uint32 z) const + { + return ((x & y) | ((~x) & z)); + } + + inline uint32 CMD5::G(const uint32 x, const uint32 y, const uint32 z) const + { + return ((x & z) | (y & (~z))); + } + + inline uint32 CMD5::H(const uint32 x, const uint32 y, const uint32 z) const + { + return x^y^z; + } + + inline uint32 CMD5::I(const uint32 x, const uint32 y, const uint32 z) const + { + return (y ^ (x | (~z))); + } + + inline uint32 CMD5::RotateLeft(const uint32 x, const uint uiShiftCount) const + { + return ((x << uiShiftCount) | (x >> (32 - uiShiftCount))); + } + + inline void CMD5::FF(uint32 & a, uint32 b, uint32 c, uint32 d, uint32 x, uint s, uint32 ac) + { + a += F(b, c, d) + x + ac; + a = RotateLeft(a, s); + a += b; + } + + inline void CMD5::GG(uint32 & a, uint32 b, uint32 c, uint32 d, uint32 x, uint s, uint32 ac) + { + a += G(b, c, d) + x + ac; + a = RotateLeft(a, s); + a += b; + } + + inline void CMD5::HH(uint32 & a, uint32 b, uint32 c, uint32 d, uint32 x, uint s, uint32 ac) + { + a += H(b, c, d) + x + ac; + a = RotateLeft(a, s); + a += b; + } + + inline void CMD5::II(uint32 & a, uint32 b, uint32 c, uint32 d, uint32 x, uint s, uint32 ac) + { + a += I(b, c, d) + x + ac; + a = RotateLeft(a, s); + a += b; + } + + void CMD5::Transform(const uint8 ui8Block[64]) + { + register uint32 a = m_ui32State[0]; + register uint32 b = m_ui32State[1]; + register uint32 c = m_ui32State[2]; + register uint32 d = m_ui32State[3]; + + uint32 ui32Block[16]; + + this->Uint8to32(ui32Block, ui8Block, 64); + + /* Round 1 */ + FF(a, b, c, d, ui32Block[ 0], msk_uiMD5TransformShiftMatrix[0][0], msk_ui32MD5TransformAddMatrix[0][ 0]); /* 1 */ + FF(d, a, b, c, ui32Block[ 1], msk_uiMD5TransformShiftMatrix[0][1], msk_ui32MD5TransformAddMatrix[0][ 1]); /* 2 */ + FF(c, d, a, b, ui32Block[ 2], msk_uiMD5TransformShiftMatrix[0][2], msk_ui32MD5TransformAddMatrix[0][ 2]); /* 3 */ + FF(b, c, d, a, ui32Block[ 3], msk_uiMD5TransformShiftMatrix[0][3], msk_ui32MD5TransformAddMatrix[0][ 3]); /* 4 */ + FF(a, b, c, d, ui32Block[ 4], msk_uiMD5TransformShiftMatrix[0][0], msk_ui32MD5TransformAddMatrix[0][ 4]); /* 5 */ + FF(d, a, b, c, ui32Block[ 5], msk_uiMD5TransformShiftMatrix[0][1], msk_ui32MD5TransformAddMatrix[0][ 5]); /* 6 */ + FF(c, d, a, b, ui32Block[ 6], msk_uiMD5TransformShiftMatrix[0][2], msk_ui32MD5TransformAddMatrix[0][ 6]); /* 7 */ + FF(b, c, d, a, ui32Block[ 7], msk_uiMD5TransformShiftMatrix[0][3], msk_ui32MD5TransformAddMatrix[0][ 7]); /* 8 */ + FF(a, b, c, d, ui32Block[ 8], msk_uiMD5TransformShiftMatrix[0][0], msk_ui32MD5TransformAddMatrix[0][ 8]); /* 9 */ + FF(d, a, b, c, ui32Block[ 9], msk_uiMD5TransformShiftMatrix[0][1], msk_ui32MD5TransformAddMatrix[0][ 9]); /* 10 */ + FF(c, d, a, b, ui32Block[10], msk_uiMD5TransformShiftMatrix[0][2], msk_ui32MD5TransformAddMatrix[0][10]); /* 11 */ + FF(b, c, d, a, ui32Block[11], msk_uiMD5TransformShiftMatrix[0][3], msk_ui32MD5TransformAddMatrix[0][11]); /* 12 */ + FF(a, b, c, d, ui32Block[12], msk_uiMD5TransformShiftMatrix[0][0], msk_ui32MD5TransformAddMatrix[0][12]); /* 13 */ + FF(d, a, b, c, ui32Block[13], msk_uiMD5TransformShiftMatrix[0][1], msk_ui32MD5TransformAddMatrix[0][13]); /* 14 */ + FF(c, d, a, b, ui32Block[14], msk_uiMD5TransformShiftMatrix[0][2], msk_ui32MD5TransformAddMatrix[0][14]); /* 15 */ + FF(b, c, d, a, ui32Block[15], msk_uiMD5TransformShiftMatrix[0][3], msk_ui32MD5TransformAddMatrix[0][15]); /* 16 */ + + /* Round 2 */ + GG(a, b, c, d, ui32Block[ 1], msk_uiMD5TransformShiftMatrix[1][0], msk_ui32MD5TransformAddMatrix[1][ 0]); /* 17 */ + GG(d, a, b, c, ui32Block[ 6], msk_uiMD5TransformShiftMatrix[1][1], msk_ui32MD5TransformAddMatrix[1][ 1]); /* 18 */ + GG(c, d, a, b, ui32Block[11], msk_uiMD5TransformShiftMatrix[1][2], msk_ui32MD5TransformAddMatrix[1][ 2]); /* 19 */ + GG(b, c, d, a, ui32Block[ 0], msk_uiMD5TransformShiftMatrix[1][3], msk_ui32MD5TransformAddMatrix[1][ 3]); /* 20 */ + GG(a, b, c, d, ui32Block[ 5], msk_uiMD5TransformShiftMatrix[1][0], msk_ui32MD5TransformAddMatrix[1][ 4]); /* 21 */ + GG(d, a, b, c, ui32Block[10], msk_uiMD5TransformShiftMatrix[1][1], msk_ui32MD5TransformAddMatrix[1][ 5]); /* 22 */ + GG(c, d, a, b, ui32Block[15], msk_uiMD5TransformShiftMatrix[1][2], msk_ui32MD5TransformAddMatrix[1][ 6]); /* 23 */ + GG(b, c, d, a, ui32Block[ 4], msk_uiMD5TransformShiftMatrix[1][3], msk_ui32MD5TransformAddMatrix[1][ 7]); /* 24 */ + GG(a, b, c, d, ui32Block[ 9], msk_uiMD5TransformShiftMatrix[1][0], msk_ui32MD5TransformAddMatrix[1][ 8]); /* 25 */ + GG(d, a, b, c, ui32Block[14], msk_uiMD5TransformShiftMatrix[1][1], msk_ui32MD5TransformAddMatrix[1][ 9]); /* 26 */ + GG(c, d, a, b, ui32Block[ 3], msk_uiMD5TransformShiftMatrix[1][2], msk_ui32MD5TransformAddMatrix[1][10]); /* 27 */ + GG(b, c, d, a, ui32Block[ 8], msk_uiMD5TransformShiftMatrix[1][3], msk_ui32MD5TransformAddMatrix[1][11]); /* 28 */ + GG(a, b, c, d, ui32Block[13], msk_uiMD5TransformShiftMatrix[1][0], msk_ui32MD5TransformAddMatrix[1][12]); /* 29 */ + GG(d, a, b, c, ui32Block[ 2], msk_uiMD5TransformShiftMatrix[1][1], msk_ui32MD5TransformAddMatrix[1][13]); /* 30 */ + GG(c, d, a, b, ui32Block[ 7], msk_uiMD5TransformShiftMatrix[1][2], msk_ui32MD5TransformAddMatrix[1][14]); /* 31 */ + GG(b, c, d, a, ui32Block[12], msk_uiMD5TransformShiftMatrix[1][3], msk_ui32MD5TransformAddMatrix[1][15]); /* 32 */ + + /* Round 3 */ + HH(a, b, c, d, ui32Block[ 5], msk_uiMD5TransformShiftMatrix[2][0], msk_ui32MD5TransformAddMatrix[2][ 0]); /* 33 */ + HH(d, a, b, c, ui32Block[ 8], msk_uiMD5TransformShiftMatrix[2][1], msk_ui32MD5TransformAddMatrix[2][ 1]); /* 34 */ + HH(c, d, a, b, ui32Block[11], msk_uiMD5TransformShiftMatrix[2][2], msk_ui32MD5TransformAddMatrix[2][ 2]); /* 35 */ + HH(b, c, d, a, ui32Block[14], msk_uiMD5TransformShiftMatrix[2][3], msk_ui32MD5TransformAddMatrix[2][ 3]); /* 36 */ + HH(a, b, c, d, ui32Block[ 1], msk_uiMD5TransformShiftMatrix[2][0], msk_ui32MD5TransformAddMatrix[2][ 4]); /* 37 */ + HH(d, a, b, c, ui32Block[ 4], msk_uiMD5TransformShiftMatrix[2][1], msk_ui32MD5TransformAddMatrix[2][ 5]); /* 38 */ + HH(c, d, a, b, ui32Block[ 7], msk_uiMD5TransformShiftMatrix[2][2], msk_ui32MD5TransformAddMatrix[2][ 6]); /* 39 */ + HH(b, c, d, a, ui32Block[10], msk_uiMD5TransformShiftMatrix[2][3], msk_ui32MD5TransformAddMatrix[2][ 7]); /* 40 */ + HH(a, b, c, d, ui32Block[13], msk_uiMD5TransformShiftMatrix[2][0], msk_ui32MD5TransformAddMatrix[2][ 8]); /* 41 */ + HH(d, a, b, c, ui32Block[ 0], msk_uiMD5TransformShiftMatrix[2][1], msk_ui32MD5TransformAddMatrix[2][ 9]); /* 42 */ + HH(c, d, a, b, ui32Block[ 3], msk_uiMD5TransformShiftMatrix[2][2], msk_ui32MD5TransformAddMatrix[2][10]); /* 43 */ + HH(b, c, d, a, ui32Block[ 6], msk_uiMD5TransformShiftMatrix[2][3], msk_ui32MD5TransformAddMatrix[2][11]); /* 44 */ + HH(a, b, c, d, ui32Block[ 9], msk_uiMD5TransformShiftMatrix[2][0], msk_ui32MD5TransformAddMatrix[2][12]); /* 45 */ + HH(d, a, b, c, ui32Block[12], msk_uiMD5TransformShiftMatrix[2][1], msk_ui32MD5TransformAddMatrix[2][13]); /* 46 */ + HH(c, d, a, b, ui32Block[15], msk_uiMD5TransformShiftMatrix[2][2], msk_ui32MD5TransformAddMatrix[2][14]); /* 47 */ + HH(b, c, d, a, ui32Block[ 2], msk_uiMD5TransformShiftMatrix[2][3], msk_ui32MD5TransformAddMatrix[2][15]); /* 48 */ + + /* Round 4 */ + II(a, b, c, d, ui32Block[ 0], msk_uiMD5TransformShiftMatrix[3][0], msk_ui32MD5TransformAddMatrix[3][ 0]); /* 49 */ + II(d, a, b, c, ui32Block[ 7], msk_uiMD5TransformShiftMatrix[3][1], msk_ui32MD5TransformAddMatrix[3][ 1]); /* 50 */ + II(c, d, a, b, ui32Block[14], msk_uiMD5TransformShiftMatrix[3][2], msk_ui32MD5TransformAddMatrix[3][ 2]); /* 51 */ + II(b, c, d, a, ui32Block[ 5], msk_uiMD5TransformShiftMatrix[3][3], msk_ui32MD5TransformAddMatrix[3][ 3]); /* 52 */ + II(a, b, c, d, ui32Block[12], msk_uiMD5TransformShiftMatrix[3][0], msk_ui32MD5TransformAddMatrix[3][ 4]); /* 53 */ + II(d, a, b, c, ui32Block[ 3], msk_uiMD5TransformShiftMatrix[3][1], msk_ui32MD5TransformAddMatrix[3][ 5]); /* 54 */ + II(c, d, a, b, ui32Block[10], msk_uiMD5TransformShiftMatrix[3][2], msk_ui32MD5TransformAddMatrix[3][ 6]); /* 55 */ + II(b, c, d, a, ui32Block[ 1], msk_uiMD5TransformShiftMatrix[3][3], msk_ui32MD5TransformAddMatrix[3][ 7]); /* 56 */ + II(a, b, c, d, ui32Block[ 8], msk_uiMD5TransformShiftMatrix[3][0], msk_ui32MD5TransformAddMatrix[3][ 8]); /* 57 */ + II(d, a, b, c, ui32Block[15], msk_uiMD5TransformShiftMatrix[3][1], msk_ui32MD5TransformAddMatrix[3][ 9]); /* 58 */ + II(c, d, a, b, ui32Block[ 6], msk_uiMD5TransformShiftMatrix[3][2], msk_ui32MD5TransformAddMatrix[3][10]); /* 59 */ + II(b, c, d, a, ui32Block[13], msk_uiMD5TransformShiftMatrix[3][3], msk_ui32MD5TransformAddMatrix[3][11]); /* 60 */ + II(a, b, c, d, ui32Block[ 4], msk_uiMD5TransformShiftMatrix[3][0], msk_ui32MD5TransformAddMatrix[3][12]); /* 61 */ + II(d, a, b, c, ui32Block[11], msk_uiMD5TransformShiftMatrix[3][1], msk_ui32MD5TransformAddMatrix[3][13]); /* 62 */ + II(c, d, a, b, ui32Block[ 2], msk_uiMD5TransformShiftMatrix[3][2], msk_ui32MD5TransformAddMatrix[3][14]); /* 63 */ + II(b, c, d, a, ui32Block[ 9], msk_uiMD5TransformShiftMatrix[3][3], msk_ui32MD5TransformAddMatrix[3][15]); /* 64 */ + + m_ui32State[0] += a; + m_ui32State[1] += b; + m_ui32State[2] += c; + m_ui32State[3] += d; + + return; + } + + void CMD5::Update(const uint8 * pui8Input, uint32 ui32InputBytes) + { + //计算m_ui32ByteCounts[0]对64的余数,即:uiPos = m_ui32ByteCounts[0] mod 64 + uint uiMod = (uint)((m_ui32ByteCounts[0] >> 3) & 0x3F); /* (0x3F)hex = (63)dec = (0011,1111)bin */ + + //更新字节数 + if ((m_ui32ByteCounts[0] += (ui32InputBytes << 3)) < (ui32InputBytes << 3)) + { + m_ui32ByteCounts[1]++; + } + m_ui32ByteCounts[1] += (ui32InputBytes >> 29); + + //尽可能多的进行MD5变换 + uint32 ui32 = 0; + uint uiPartBytes = 64 - uiMod; + if (ui32InputBytes >= uiPartBytes) + { + memcpy(&m_ui8InputBuffer[uiMod], pui8Input, uiPartBytes); + this->Transform(m_ui8InputBuffer); + for (ui32 = uiPartBytes; (ui32 + 63) < ui32InputBytes; ui32 += 64) + { + this->Transform(&pui8Input[ui32]); + } + } + + //输入区内剩余的数据 + memcpy(&m_ui8InputBuffer[uiMod], &pui8Input[ui32], ui32InputBytes - ui32); + + return; + } + + void CMD5::Calculate() + { + //整个数据流的字节数 + uint8 ui8TotalBytes[8] = { 0 }; + + //转换uint类型 + this->Uint32to8(ui8TotalBytes, m_ui32ByteCounts, 8); //2 * sizeof(uint32) + + //拓展字节到 56 mod 64 + uint uiMod = (uint)((m_ui32ByteCounts[0] >> 3) & 0x3f); + uint uiPad = (uiMod < 56) ? (56 - uiMod) : (120 - uiMod); + this->Update(msk_ui8MD5PaddingArray, uiPad); + + //附加数据流的字节大小的数据 + this->Update(ui8TotalBytes, 8); + + //处理MD5字符串 + uint8 ui8MD5Str[16] = { 0 }; + this->Uint32to8(ui8MD5Str, m_ui32State, 16); //4 * sizeof(uint32) + for (uint ui = 0; ui < 16; ui++) + { + if (ui8MD5Str[ui] == 0) + { + strcat(m_szMD5, "00"); + } + else if (ui8MD5Str[ui] <= 15) + { + sprintf(m_szMD5, "%s0%X", m_szMD5, ui8MD5Str[ui]); + } + else + { + sprintf(m_szMD5, "%s%X", m_szMD5, ui8MD5Str[ui]); + } + } + + return; + } + +} diff --git a/AutoDiskCopier_v3/src/NotifyIcon.h b/AutoDiskCopier_v3/src/NotifyIcon.h new file mode 100644 index 0000000..cc3149f --- /dev/null +++ b/AutoDiskCopier_v3/src/NotifyIcon.h @@ -0,0 +1,169 @@ +#pragma once + +#include +#include + +namespace NOTIFYICON +{ + + class CNotifyIcon + { + + public: + + CNotifyIcon(HWND hOwnerWnd, UINT uiID, UINT uiCallbackMessage, bool bHighVersion = false); + + inline void SetValidParamFlags(UINT uiFlags); + + inline void SetOwnerWindow(HWND hwnd); + inline void SetID(UINT uiID); + inline void SetCallbackMessageCode(UINT uiCallbackMessage); + inline void SetIcon(HINSTANCE hInst, PCTSTR szIconResourceName); + inline void SetTip(PCTSTR szTip); + + inline void SetBalloonTimeout(UINT uiTimeoutMS); + inline void SetBalloonTitle(PCTSTR szTitle = nullptr); + inline void SetBalloonInfo(PCTSTR szInfo = nullptr); + inline void SetBalloonIcon(DWORD dwFlags, HINSTANCE hInst = NULL, PCTSTR szIconResourceName = nullptr); + inline void SetBalloonLargeIcon(HINSTANCE hInst = NULL, PCWSTR szIconResourceName = MAKEINTRESOURCEW(IDI_APPLICATION)); + + inline BOOL AddNotificationIcon(); + inline BOOL DeleteNotificationIcon(); + inline BOOL ShowBalloon(); + + + private: + + NOTIFYICONDATA m_nid; + + }; + + + //CNotifyIcon实现: + + CNotifyIcon::CNotifyIcon(HWND hOwnerWnd, UINT uiID, UINT uiCallbackMessage, bool bHighVersion) + { + memset(&m_nid, 0, sizeof(NOTIFYICONDATA)); + + m_nid.cbSize = sizeof(NOTIFYICONDATA); + + m_nid.hWnd = hOwnerWnd; + m_nid.uID = uiID; + m_nid.uCallbackMessage = uiCallbackMessage; + + m_nid.uFlags = NIF_ICON | NIF_MESSAGE | NIF_TIP; + m_nid.hIcon = LoadIcon(NULL, MAKEINTRESOURCE(IDI_APPLICATION)); + wsprintf(m_nid.szTip, TEXT("标准工具提示信息。")); + + if (bHighVersion) //Version 5.0 (Version 6.0: NIIF_NOSOUND) + { + m_nid.uFlags |= NIF_INFO; + + //气球提示超时时间(10000ms-30000ms) + m_nid.uTimeout = 15000; + + //气球提示标题 + wsprintf(m_nid.szInfoTitle, TEXT("气球提示标题")); + + //气球提示内容(是否显示气球和立即去除气球通过m_nid.szInfo的值和NIM_MODIFY设置) + wsprintf(m_nid.szInfo, TEXT("气球提示内容。")); + + //气球提示框图标(若m_nid.szInfoTitle为空字符串,图标不显示) + m_nid.dwInfoFlags = NIIF_INFO; + } + } + + inline void CNotifyIcon::SetValidParamFlags(UINT uiFlags) + { + m_nid.uFlags = uiFlags; + } + + inline void CNotifyIcon::SetOwnerWindow(HWND hwnd) + { + m_nid.hWnd = hwnd; + } + + inline void CNotifyIcon::SetID(UINT uiID) + { + m_nid.uID = uiID; + } + + inline void CNotifyIcon::SetCallbackMessageCode(UINT uiCallbackMessage) + { + m_nid.uCallbackMessage = uiCallbackMessage; + } + + inline void CNotifyIcon::SetIcon(HINSTANCE hInst, PCTSTR szIconResourceName) + { + m_nid.hIcon = LoadIcon(hInst, szIconResourceName); + } + + inline void CNotifyIcon::SetTip(PCTSTR szTip) + { + wsprintf(m_nid.szTip, szTip); + } + + inline void CNotifyIcon::SetBalloonTimeout(UINT uiTimeoutMS) + { + m_nid.uTimeout = uiTimeoutMS; + } + + inline void CNotifyIcon::SetBalloonTitle(PCTSTR szTitle) + { + if (szTitle) + { + wsprintf(m_nid.szInfoTitle, szTitle); + } + else + { + wsprintf(m_nid.szInfoTitle, TEXT("")); + } + } + + inline void CNotifyIcon::SetBalloonInfo(PCTSTR szInfo) + { + if (szInfo) + { + wsprintf(m_nid.szInfo, szInfo); + } + else + { + wsprintf(m_nid.szInfo, TEXT("")); + } + } + + inline void CNotifyIcon::SetBalloonIcon(DWORD dwFlags, HINSTANCE hInst, PCTSTR szIconResourceName) + { + m_nid.dwInfoFlags = dwFlags; + + if (dwFlags & NIIF_USER) + { + m_nid.hBalloonIcon = LoadIcon(hInst, szIconResourceName); + } + } + + inline void CNotifyIcon::SetBalloonLargeIcon(HINSTANCE hInst, PCWSTR szIconResourceName) + { + m_nid.dwInfoFlags = NIIF_USER | NIIF_LARGE_ICON; + + LoadIconMetric(hInst, szIconResourceName, LIM_LARGE, &m_nid.hBalloonIcon); + } + + inline BOOL CNotifyIcon::AddNotificationIcon() + { + return Shell_NotifyIcon(NIM_ADD, &m_nid); + } + + inline BOOL CNotifyIcon::DeleteNotificationIcon() + { + return Shell_NotifyIcon(NIM_DELETE, &m_nid); + } + + inline BOOL CNotifyIcon::ShowBalloon() + { + //要求启用高版本 + //更改m_nid的:dwInfoFlags(气泡图标选择子)、szInfoTitle(气泡标题)、szInfo(气泡内容) + return Shell_NotifyIcon(NIM_MODIFY, &m_nid); + } + +} diff --git a/AutoDiskCopier_v3/src/Removable.ico b/AutoDiskCopier_v3/src/Removable.ico new file mode 100644 index 0000000000000000000000000000000000000000..25779dcabaab49e71c50237518148963c04070b9 GIT binary patch literal 17542 zcmcJW36xgVk;l6MMdBJwj4{z*G>*|Y(IifEj8UVl$Lf(*Dkxv|L)%;Ev@k1($X%{b)IkDC@t;E zyVBCG(=VEMLX@uSU*IoY&o+ptp^kOwEL}VMG}Ktv&k+e#y~I79Iohnnj5Rch!O(Y2y~sY6`5hG#@PTlan1 zq-}V>3!YyUf#J&{Fo6w>^hwRdfBZgI#QPfEv>VgY({E|iu;J~E&pzwUCXLU&=iDae z+;`r&P42(=q6>a?-PKn<{^OgjZ*l9*H@q0=Hl5%8!y8*YaOaQv{QBP8hlsL%bz2Ya?_zW$}>{<8RyU))o2^9|Q_ zy!4VU|58|+iWm#@3jAj`Xwcx&-#u`5kD`G+j!r7gcQeM9x;f=z+^f?kx>sk2bX+iV zl3T#K7tWaEc}9Has;yZQM!89n z$?&0lj<ufbJUe7(t_uC3S3oKWVbyfVyas*aOK7rXMZA~$JN zp_@1|-%S{i_fI8wOe!sO<)ez+avxKi<;D-sHN5m2?7qDsH)V8*`Ua`pF|}#hnBi{P*b!$YJyZ8RFE6#JwkJzg z@G^OccaYgDMOoHv(SYvm*++kUwMjkkuXo$0zg{5yn>KEw<5}98IkC*m)YwfGPueV( zT*j5;7>&*!?8@>7dCK$0(wzR98+~FLHn_J-68CtfjOPLFo-A;AwC&RP)m|S_5_J?M?%BpEdqHUVO@dAyfSU)3{+?r-d~`6y|PP zgg;~4upCz^ohTaA%Vqa|*=1#Pbh(+bX#;w=VqF`SmHAJn67hh4LH{1cJ4-r{BRLce z?&U^E_m~<T};sL;Wrpum0ur>*lhMsqkm_?rcZiN0xc&OI~JYm*2OG%hy~<5_6}p zf7j1N1^v3#de_=fo3srN8#nPwVlYg)HgRMD_$Q0P`i1-(_G$ObRP0V+|L&S2eKemm zhsz4x^f4uF(ToXh@ti4c#gbRu$~PCgO>5q9TQ{tVXoE3)+FOSb#$SdFg#oHzOTll zs~cOA?K0axyGVGkpZ3?c!?WpwyS5z1J8Ry4!);l&%GGS&EG)a+p?$mE;r-AaPX}}q z9f1z+b4TCb?~WaU4#af)@ImM4{piSV?(cU;?O7f59`7GHxHoEhw>u<0@bgsT-bW6? zuzUL!M<3U&sBlZ>PIW`NwVK(lL$g@_2fqA#gZw@(joGzrquaM@o2#kXq<2Idt2Vnm zJGZ#KJGbdxmD^vl!yVYYQ|<0l`_(5@pbM$@RFED!2?|_y58&2>sRvHtv zN4xu~tBlW{om&kvIBKdkx@zI#$aP3qrw$V4Ab-wvt#I3h)rNbgbfH>fTx0JE{|@kP zb$ivf{WaU&0r5IWAH*9OSsxf9ut}cCv_7)?8b{=7vIRdnRRjL*Dg5HMTjLLZaO~Q$ z!R_3w}E}_^SiYnuc&;!Gbt%^ElwKdyeD}H&$zJ1Y*u@Xsg+DlUZCUSjY+CDft6$g; zVQnY;@%n`x>Dv8E=1nsliSb7|WOE>)L#Z){^eF0s=~ARmzCT{K!a4VA$=&omg*}!% zx`W;)bZ5uLHR{_|w`}1om)EQP!$J4MQTVT)KV^)KBYoYeKF4Da=5f>q=6HR5@bkgz zlgH|19pjGlJt_D7)xxj#47==v={@sS zUMO3C5?qEq(xF}P7+{k&8=u$~iFd8}j6Op)ujz*;ej9NQeUIdB*dv=0%Ra&$bO-D^ zB~Qbz`7vw4NSD*IEiq=TKk3uilS}iCf^o;Dbx|LpF^Kw5qdA2whL`U{Y8-q&n2WMY z!dI8T%su96ur*%pk?i9+i|m8V@$(kl*@ng;+dvJgq z`Lhm88j-VCSjkh=`qQj!56?>XF%_XfF6ZB*((rKkG-NSKu{5$FYwP zHZq~_v8@c)<2mbX4!EoEPbAAK^<{kVkab|K1ztaNExjza@8rr=Z=1|{hj(lDK{nNN ziFGkrn>FsiwxUy?P2RpI?PSfiFke%817G-W7mg}qDxJXgzmng7zOcq?Z|KM1&M%~o z%<7qq|AXBz{2I5~dW0=zO^DV7`hcw#fyc;vjYzkGj)u)BO0#>9MAiX!@>nvkTf28F7MYBB-_K+8P-OO$xsb4{(nsuc@RK~Qs2`y} zF=lTYSxb1H_iTMltWoem?zONR{*{Jh{NGSGuih z-?e*hy*|$s_U-g|5_9r=Xt!4P$UprrcrfRYzh8^jyPCv0uqUA}$UI<6^(FHCOwYW& z**&!p)>OkC*%*8qlX*hlu_FQdmbLE~mN({4|9EJR*7qkdC(nid_Jz~OANKe)=hYtg ztIZz`{*c#sbQwEhYcV!OYrF3Y>!x(surlAhjKS;4>!7VmYTN6&x9`lkpzlfSTQqNZ zUh&C^tZuD-n#7zu&+69lrr8rlR-r#tijSE4$Ytjyuk(fpJ+XO-`MUSq7U>MQH?LXYHm{aV6o$Ez%61DQxzKw5bnm*U zWreH2StZ@`_=6tN2XsB)*E|${TgMoO*yj8ACd4C*iTN?;H~J9>+(F)vu54Q;U9SiG zCfW2I8`mkGEUpyB@6`)l7j^H-@g+kR5zAI--fWj#{5)VCW-cV{KloE)uva>SKV$3f zZuLR&88I4u!#=HJ^n-b7_B@F@=(%t+Pto;Q?!vuk)mv`ksyA)z(%QRR7*EN)h5qFB zYJYKQcAqg-lF>HB)65~pHrP`5d%ea6F%LZc)ELkQbSd&3@Po{!BTlSVe80oi0BjoV zn!MKrT}kT83gLd+ZCokrE0?><_m(MFu-c8z>o-Mnl)Zs^|8je_Yf?O*YmVg>B!A`* zeEd3${K4elCMw* z>M#aAXF^^j;D4X^ai8)j8V_vUHt7y?6q#?5u7EpW-|+4-xA8swUcKT|#f|-Be@^k; zLTB(Ra(cFFt#$72==)annYFu0b8UOH9{Y8eK7@Iku%}TU_9y1Te*ESz2E+rx4gQcP zAumH;8QU$gHIh^jZ&=@y8~Sfyd#OI(CxJgbC!_6C%NNc*UL$-d{0SYx zf54`TkX`T{EXJ2T@?(I%>BnF{K7SIw#WWHAIH$DN`h-13pDHEqfPMXnr8XDedVTJP z!uH(hd>{J2Jw5Zgg)=4`1P`_>IR_X6!WP8&10>fyRbtd@7Lke`8nX%GsOT&{Mb^P1K3jV`e{?47+>?F!ntbf{;0gY%kqwRUYwc%lC-M8W zfEXaL9*eh+DX~L-9rO6r2g|WU`A+gg5%wbo$v2WGJs1->SVI)ItdVS+einY|*VzS` zonC{d`B2y(`4WcTeA37tVhkcXS{=zhj$h2L^Rc40qaMH49q^0DX9+uW_yBoai2Sb4 z16%(0$ouYtqler_9~^VV{kvAkcCu%B#y`bjjq>|+EU%W2hVOuF#uu`64E*v#i0|XI zSYykxtYcpPgI@~%$e)O9kY9%nVn1X2(i_9?bG;#t9q^wxc36El>?G6KlI>}2f9RC( zlglk8r;ncCM^tGI*v>i@%l}mTSY+pAxqR+~GL*4((&1WF@;ODB>^HXK*^*muK zWmhaO9od;@FN+v&4xXXrzAkJeWx zm$iP`f|(zaZ%ol_r}#3WIquEZk~G)7`TAU^bta;Dwa*vNb8p8qU*`#0@~V3~K`WLn za0&Wk`q*KcWP7N~_*{SVQ-0nJ#FL`?MGwT(z14$5KQATU`^V1VeXr=o)5-n=dUWBD zlNlV-Q%8QLr5!mLjv01xn`tLLsPik%8oqo{;=QYtD^QO6~;hA0jikm)uq}7sy+8Sy_{!yaN zg*ut(svn_kYGsCJ^*(gjS1)F~Y#e^~z+H{Y@(2FU7}aM`$5XDoco?3?0mf7)}tdfc#Vf3J9` zD;d;Fdnqq#KexTJ`Uk5IdB*B3sJWotqdwwZAZjLfH%o2M7WFRUw8u@&2Qm@QpCtI- zhkQq5_ftJbGpo1g->Ib=tQw509v!S!Bd>2)SJ1CpEn-i<0IGAHS^?@yr~{#nqn~hC zjfm&DUm?%iqp-qw)s0z8#u%5B#$;+O)vOA+}*po}3Oo2EWNS z;O7$CvcGOT%}?0pj!|P^d+|}d0DdPieAs(etVS*p|JC~^(LS5n&CY1sKJeGR*I&(V zR6IlM!Lz(W4wHC=Ju7@$+9s~{d+5Xz;tS!YjVhqS3sexUGz+wY^%cli6gCvudV z&*V4e|5GC>JG+F>l5lU9!Fh+57$4 zx0lS9O=wRIt^E;Oygs}91ibzDAOrLu?C<-0wqc0k&g4F(k3&=YfMFjE{K%3qwZ5x= z^l|CDsec#GIA$O=P#nFTcog|q92v$T#t`M<;`kB2IwH$S5ZCy9vM`5;KmERd`X#=^ z8RR$SO&+}mo{9daPa2uK47`?G*0Vm2O5}2M&vN_Z5iAY~IevV7_;Q_`VM^wnH+}bV zCl`)9rj`|~6#rU2z^I(e@wA)DsV4Fnw%-xul!U|QCOt3s8BeY=*3z3G^VD9e&&3n> z^30fm0nf`+e}CW`j*26jzVpVyI4@}XLs2dy&grA$>UW&WPuN6k0Q$h*MtyrF zeD^Q@QOZuU$(9eqD@n@s>mNxudZ5Fvje6_}q1B zuYi2JV&6}(w}EdsYCbkxFn#BXm{f9>!xkN9kpE<~sXNrh_&QJ%67Q4E&>98hb+cXAyrJfB8W8BjnEL zJ9#tmP9G@e_n~r5nrD6M@(sV`6FtWsq2koBr7t2Og~TEnl^3+h%OfeRcVU-{^(#Jt^NLQ`GnWnKIS(({*)ksbc<&06<5br+-mesy050 zs`ZShab3DD%?JKB>G(PF6wF)l3FH=tU&%f24HVx(g>SOh2PKyPan5&I;XcpuPRLb| zcL=tiVS@(gS2g|SWsm&y$3N));5|PncM* z`X)i&Jt#KM)VB})UTR_AR%Et+Ua{TtE)&u@-&=5xZ!d^}`Hq3uoY~6r6_jP8euV`?6$>h#H;X5Gpw74uo!^1~9bE`BS1D0|szGhS~-=k?71zxlW7AF@KW!LJPQ9r7|Fo|B(v zZEJiCyWY1rTK*pG%a_j#`lHv9^w`1 zEmiy1DzsnJuk%Cf{o&tQtcs5w^~1(n?f5vz$6=ve*7PuL76;15!binVEFRG1525|S zelOo#sr84peSMp6Kj?z_VCoO;8R?vB$lGLs-*0WJhD5#wb@wF$y51VvSIqsbHQMjT zuLyCr$w%W%{}~V3f*(Yz=-W-kGQO4x|57=kkCnUmc4%LI<)teY&wqcr#SkHv;C%-3 z-6d~i4lmk{;}l{f`Fr>r<~v8Rg4#N&HnHROr?vAu)zNLX8X|n7NXPsb*VZF+3Hie# z$U3gQk}tM#<(rDbr)^jJ7l!t=f6`E~@iOoK%Kyaok{nF#%xATS-)l86=qU46_JQm0 zAil90m#Ef4b?Yl6pE%BEo+g^tUx2#pYj`qjL6%85@WD|~> zW1VQvx1Wkt!RF^cm}ik+Sj#6>&Q3lU`@)Qw=2nl;ZaB(Ec?_AOzdjcc`QK6d!Cu69 z!MJ_!N4}W+F!l3 z{0_)}D_f|1bUr@IC;ATcgO^)ATcLfNb6@z&Z_j!21pR?3}g6VktdCefIK2bKIcLE$)#1 z-GKdNzL-6ce?aVPxoxZW@IC?SU$B+TH)@ph?)OC(VArvqtO2ZRtdSx9W^bK$nIG6( zY&vTp>x$mJME0V=%4M&8WNWZ6V2i^VZ+1=Z!PnkZ`|xHxTDkl+a+c;RFJCxo8|#d% zvAQ4D5c&hfYl-d=zhdiDJGN8fZ-0xXk6%oiv<*I6A9b`fQkb|-+dRX&tO_4^{n_z3XWRBlr@991^1e;GDMDLV`_vcJ39f1A9z8ePFMU!LXt6>9K_sCgc zɠ-e5?0e?m!C8+-s;NA(;SsB<>kK`dFPbj8y7(<)RGUZH$cMa6=d+*>H$;bQ;( Q6xpEDQ%3rfyU#@b3wz($N&o-= literal 0 HcmV?d00001 diff --git a/AutoDiskCopier_v3/src/resource.h b/AutoDiskCopier_v3/src/resource.h new file mode 100644 index 0000000..7e54b08 --- /dev/null +++ b/AutoDiskCopier_v3/src/resource.h @@ -0,0 +1,33 @@ +//{{NO_DEPENDENCIES}} +// Microsoft Visual C++ 生成的包含文件。 +// 供 AutoDiskCopier_pre.rc 使用 +// +#define IDD_DIALOG 101 +#define IDB_BITMAP 102 +#define IDI_ICON 103 +#define IDR_ACCELERATOR 104 +#define IDC_BTN_HIDE 1001 +#define IDC_BTN_QUIT 1002 +#define IDC_BTN_BROWSECOPYFILEPATH 1003 +#define IDC_BTN_BROWSEKEYFILEPATH 1004 +#define IDC_BTN_CREATEKEYFILE 1005 +#define IDC_EDIT_COPYFILEPATH 1006 +#define IDC_EDIT_KEYFILEPATH 1007 +#define IDC_CHCK_CHECKKEY 1008 +#define IDC_CHCK_SHOWNOTIFYICON 1009 +#define IDC_CHCK_AUTORUN 1010 +#define IDC_CHCK_CONFIRMDIALOG 1011 +#define IDC_CHCK_MD5 1012 +#define IDC_BTN_SAVESETTING 1013 +#define IDR_ACCELERATOR_HIDE 40001 + +// Next default values for new objects +// +#ifdef APSTUDIO_INVOKED +#ifndef APSTUDIO_READONLY_SYMBOLS +#define _APS_NEXT_RESOURCE_VALUE 105 +#define _APS_NEXT_COMMAND_VALUE 40002 +#define _APS_NEXT_CONTROL_VALUE 1014 +#define _APS_NEXT_SYMED_VALUE 101 +#endif +#endif From 34aed0dfd907df141fede2aa4c8537c229fefdfa Mon Sep 17 00:00:00 2001 From: KondeU <370242479@qq.com> Date: Mon, 16 Aug 2021 23:48:51 +0800 Subject: [PATCH 02/13] =?UTF-8?q?v3=E6=94=B9=E7=89=88UI?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Desc: v3改版UI,去除大图片,增加免责声明,增加开源链接 Type: Feature Link: NA --- AutoDiskCopier_v3/src/AutoDiskCopier.cpp | 2 +- AutoDiskCopier_v3/src/AutoDiskCopier.h | 4 ++-- AutoDiskCopier_v3/src/AutoDiskCopier.rc | Bin 11308 -> 11544 bytes AutoDiskCopier_v3/src/resource.h | 5 +++-- 4 files changed, 6 insertions(+), 5 deletions(-) diff --git a/AutoDiskCopier_v3/src/AutoDiskCopier.cpp b/AutoDiskCopier_v3/src/AutoDiskCopier.cpp index f726bc0..47adf51 100644 --- a/AutoDiskCopier_v3/src/AutoDiskCopier.cpp +++ b/AutoDiskCopier_v3/src/AutoDiskCopier.cpp @@ -91,7 +91,7 @@ LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) RegisterHotKey(hwnd, 0, MOD_CONTROL | MOD_ALT | MOD_SHIFT, 'U'); //托盘图标 - adc.m_ni.SetTip(TEXT("AutoDiskCopier_pre\nBeta2,Ver2.15.11.24")); + adc.m_ni.SetTip(TEXT("AutoDiskCopier v3.0")); adc.m_ni.SetIcon(((CREATESTRUCT*)lParam)->hInstance, MAKEINTRESOURCE(IDI_ICON)); if (adc.m_bEnableNotifyIcon) diff --git a/AutoDiskCopier_v3/src/AutoDiskCopier.h b/AutoDiskCopier_v3/src/AutoDiskCopier.h index ef73974..684b55f 100644 --- a/AutoDiskCopier_v3/src/AutoDiskCopier.h +++ b/AutoDiskCopier_v3/src/AutoDiskCopier.h @@ -191,11 +191,11 @@ class CAutoDiskCopier RegOpenKey(HKEY_LOCAL_MACHINE, TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\Run"), &hReg); if (m_bAutorun) { - RegSetValue(hReg, TEXT("AutoDiskCopier_pre"), REG_SZ, szFilePath, (lstrlen(szFilePath) + 1) * sizeof(TCHAR)); + RegSetValue(hReg, TEXT("AutoDiskCopier"), REG_SZ, szFilePath, (lstrlen(szFilePath) + 1) * sizeof(TCHAR)); } else { - RegDeleteKey(hReg, TEXT("AutoDiskCopier_pre")); + RegDeleteKey(hReg, TEXT("AutoDiskCopier")); } RegCloseKey(hReg); } diff --git a/AutoDiskCopier_v3/src/AutoDiskCopier.rc b/AutoDiskCopier_v3/src/AutoDiskCopier.rc index 90fb93b9588ef218b76e4e412aa86cf677db66e3..5d4f4b9dac5bb3b72eb17d93413d253177a0967a 100644 GIT binary patch delta 748 zcmY*X&1(};5TETfuyHq=G<6e`s!6s_)^g%$qm!-tYHj=FOYg7ne4! za=Z!=@PkI8=tXXU!ENh9bnr5EhYwo)a35kY3<|2eFLaEqYLJAERUkqBILtsECg2pL zAxCQ#Sw6~re!2d*mEC=c4#A5XJjWz)i?6XUNMOc(T(1gUj70?%QrL8i>6n_vwuGGIH}^x*JK{>=j`WCZ0w1{6S%q)`cbyoG>{{+VObc>q6bf(x=HVVm6&7Ix zq9k*0oBVmG!8K~ib*MmzqUXq#;Rf7<3lPO0;Y0nS6gBWNHRudXQhV~$ri-LgEWpYAmBLOY!EWX0U8x$jH96$b4>U$1Ji)6bgLm=;C1ANb8M zakFB-_bf}b=_N1A*^I)BTujAha%gWv-;%#|(aa3vm7oW!As23kHtD}r%m>}3|2{m4 b{%{;m4~$#PLH&30>p;+A4zBJSv~~XhnhUJ1 delta 689 zcmZuvO=}ZT6g`t^Y;^3j`Iu^&igB!_k+jK7W;z*)h|wrgl%^FCUBn_?NEJ;{LFz(R z(v2?eMprIexN%__e}GVQ<-&z7TouJ1;KHrwd6OWBWw`I1ch9+J?tQ$cmtI|beI;eo zP(cwcLO9V%s;eb$VHL~rW#^ihLq&O;9T;w+gC@@4JkH`c=H-czzieX>x3R>yhO4k? zvdHfr9c}M3difJ*;T#=WSfG>gIZa$a&<__4%n*mD$=0r_JT}JmC@y5a!uEQsqjtp) zJYV?rK#8Pgr1Tm>35`2Rhr%G*Fpg?T7Y?0f%|c`j9nr`HXz;jBRHu5wn2i#{38nMk zDjlb_< Date: Tue, 17 Aug 2021 00:32:01 +0800 Subject: [PATCH 03/13] =?UTF-8?q?=E8=B5=84=E6=BA=90=E6=96=87=E4=BB=B6?= =?UTF-8?q?=E4=B8=AD=E5=8E=BB=E9=99=A4v2=E4=B8=AD=E7=9A=84=E5=A4=A7?= =?UTF-8?q?=E5=9B=BE=E7=89=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Desc: 资源文件中去除v2中的大图片 Type: Feature Link: NA --- AutoDiskCopier_v3/src/ADC_Main.bmp | Bin 270054 -> 0 bytes AutoDiskCopier_v3/src/AutoDiskCopier.rc | Bin 11544 -> 11208 bytes 2 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 AutoDiskCopier_v3/src/ADC_Main.bmp diff --git a/AutoDiskCopier_v3/src/ADC_Main.bmp b/AutoDiskCopier_v3/src/ADC_Main.bmp deleted file mode 100644 index 2517359309fb1188a060de97b0c86b59fab088aa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 270054 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%0A}JV)9OL!by$drpW<%b4+s zDw0+7%DMT@TC(XYc}ciRcuT|Fb+k*Ile64N@w=3QPw{q{9(#PSi(9Q|QR5$i@inBKiq;+!njYKeUX&e(K%ZC<`s+p8so0p|j+Y{{{gEcGpW|VwjtX2nS9TZJAPZRl^32vRen?b&ZtiEm)7R z)rzoLL|`TbS0~lcJKI}KH~2wkiE1mBCCg6ZQYChqtJ+=`c01m!b?fB=1izcFSEM-d z9T6PL)vh%%SMt)BFj$v;fVEZkt>*!GF5NGIqBFjn%3AVE-F(ZoT3TksV^Nag zG#7CDy%=w26|-g6q`@L_-K4sm;}p76yi+?-d6jgEo^;8V7zT2et{qXExL=K^R;_tD zYL~qB8IiTpC=o`GyGvZqsS3ql>v1Wg9rX&Qr3%GJd%J1lQRHeYMOa|+@<|Bzn$e0X z>%T1fE*ZBIi>>IDrWBc7vRs5ht2Z01@p5M=FMK#?(`+^laLwqNCbRwYEhMaw7N;%NG`dhHC8l4caws&7+kXEv&xk2${)w()&}je zNw>;iAt2`Iv5=2|2f3F>JmoUWoh~tV_1KzJ2Jc=XnC?wv0Cx4#MM_-mtuJ5R_$NZ0 zq1sEtBH&H+itz=JT&U3{UkaUIy z;?*shjC_hb4r=XSeb`ce7aE;UNWcXrR?fE{pZz2=v%D`3%@=Jf z{!Q9`@nDL0%!MU4^=(pfzY?^P*F|2I!{l#SJQqm>BM^8D0>1ZkkjTdBA^aKy z9#Y#&Qi1oXGV68m`d-y(o8xV6UY;y%2tYst+AW#F?r#7!_y&#gru9(AKYyDOlqS#Z zE#b+D7oqLie(jpNuitn)xCl3lK;Qugly}p)D}UFas|54A!swQDhqjkn)$Q53-d$(yRHY9$(4yA+pr?QuAHU0uAXR;!b?x|zJQEYlaD5w| z?lH5zjo(4xu5sx~^}0r=*nC<7`~QsTzKy}Tq)(Z3s`#Bk~H z#U_Sc*@)`)+MdytFb3Qv?}M8lTy^ke>vh#oF%AI;JQ4xd)gvh9;Jwd9ZfB2FJ92>l z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV= z5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHaf zKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_ z009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz z00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_< z0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb V2tWV=5P$##AOHafK;Xy({tvMnFERiC diff --git a/AutoDiskCopier_v3/src/AutoDiskCopier.rc b/AutoDiskCopier_v3/src/AutoDiskCopier.rc index 5d4f4b9dac5bb3b72eb17d93413d253177a0967a..e93ae6d79eca0d2ffc60fbd4adb97c4d783a9800 100644 GIT binary patch delta 12 TcmbOcbs~HNpWNm+`CYsKBUA+C delta 112 zcmX>RJ|k)apParELncEBLoP!iLjeOX0~don5Q1nB_GEBjaAJrDVo!z;244n8hJeY5 uJhI%#{Dr)#(n>%X7Y1jbN?)KknGAUhdJIWGGYc4$CiBYd-Yg)ugBJjI Date: Tue, 17 Aug 2021 00:32:55 +0800 Subject: [PATCH 04/13] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=B3=A8=E5=86=8CAutor?= =?UTF-8?q?un=E5=A4=B1=E8=B4=A5=E6=97=B6=E7=9A=84=E5=A4=84=E7=90=86?= =?UTF-8?q?=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Desc: 添加注册Autorun失败时的处理逻辑 Type: Feature Link: NA --- AutoDiskCopier_v3/src/AutoDiskCopier.cpp | 3 ++- AutoDiskCopier_v3/src/AutoDiskCopier.h | 10 +++++++--- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/AutoDiskCopier_v3/src/AutoDiskCopier.cpp b/AutoDiskCopier_v3/src/AutoDiskCopier.cpp index 47adf51..9b64402 100644 --- a/AutoDiskCopier_v3/src/AutoDiskCopier.cpp +++ b/AutoDiskCopier_v3/src/AutoDiskCopier.cpp @@ -206,8 +206,9 @@ BOOL CALLBACK DlgProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) case IDC_BTN_SAVESETTING: padc->GetDlgInfo(hDlg); + padc->RegisterAutorun(hDlg); // 注册失败时会自动更改标记 + padc->SetDlgInfo(hDlg); // 因此重新获取一遍标记再SaveSetting padc->SaveSetting(hDlg); - padc->RegisterAutorun();// return TRUE; case IDC_BTN_BROWSECOPYFILEPATH: diff --git a/AutoDiskCopier_v3/src/AutoDiskCopier.h b/AutoDiskCopier_v3/src/AutoDiskCopier.h index 684b55f..2e9655f 100644 --- a/AutoDiskCopier_v3/src/AutoDiskCopier.h +++ b/AutoDiskCopier_v3/src/AutoDiskCopier.h @@ -182,16 +182,20 @@ class CAutoDiskCopier } } - void RegisterAutorun() + void RegisterAutorun(HWND hwnd) { TCHAR szFilePath[MAX_PATH]; GetModuleFileName(NULL, szFilePath, MAX_PATH); - // + HKEY hReg; RegOpenKey(HKEY_LOCAL_MACHINE, TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\Run"), &hReg); if (m_bAutorun) { - RegSetValue(hReg, TEXT("AutoDiskCopier"), REG_SZ, szFilePath, (lstrlen(szFilePath) + 1) * sizeof(TCHAR)); + if (ERROR_SUCCESS != RegSetValue(hReg, TEXT("AutoDiskCopier"), REG_SZ, szFilePath, (lstrlen(szFilePath) + 1) * sizeof(TCHAR))) + { + MessageBox(hwnd, TEXT("自启动设置失败,请检查是否有注册表写权限!"), TEXT("ADC - 保存设置"), MB_ICONWARNING); + m_bAutorun = false; + } } else { From e6d5c2a6db7d9dbde88f826635b92c0ddba16411 Mon Sep 17 00:00:00 2001 From: KondeU <370242479@qq.com> Date: Wed, 18 Aug 2021 00:08:43 +0800 Subject: [PATCH 05/13] =?UTF-8?q?UI=E6=B7=BB=E5=8A=A0SysLink=E9=93=BE?= =?UTF-8?q?=E6=8E=A5=E5=88=B0=E5=BC=80=E6=BA=90=E4=BB=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Desc: UI添加SysLink链接到开源仓 Type: Feature Link: NA --- AutoDiskCopier_v3/src/AutoDiskCopier.cpp | 16 ++++++++++++++++ AutoDiskCopier_v3/src/AutoDiskCopier.rc | Bin 11208 -> 11214 bytes 2 files changed, 16 insertions(+) diff --git a/AutoDiskCopier_v3/src/AutoDiskCopier.cpp b/AutoDiskCopier_v3/src/AutoDiskCopier.cpp index 9b64402..6eb1918 100644 --- a/AutoDiskCopier_v3/src/AutoDiskCopier.cpp +++ b/AutoDiskCopier_v3/src/AutoDiskCopier.cpp @@ -257,8 +257,24 @@ BOOL CALLBACK DlgProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) SetDlgItemText(hDlg, IDC_EDIT_KEYFILEPATH, padc->m_osdlg.GetFilePath()); } return TRUE; + } + break; + case WM_NOTIFY: + switch (((LPNMHDR)lParam)->code) + { + case NM_CLICK: + case NM_RETURN: + { + PNMLINK pnmLink = (PNMLINK)lParam; + if (((LPNMHDR)lParam)->hwndFrom == GetDlgItem(hDlg, IDC_SYSLINK)) + { + ShellExecute(NULL, TEXT("open"), TEXT("https://github.com/KondeU/AutoDiskCopier"), NULL, NULL, SW_SHOW); + return TRUE; + } + } } + break; } return FALSE; } diff --git a/AutoDiskCopier_v3/src/AutoDiskCopier.rc b/AutoDiskCopier_v3/src/AutoDiskCopier.rc index e93ae6d79eca0d2ffc60fbd4adb97c4d783a9800..c806892d588b05d85faf2fdb756e22c0239bed98 100644 GIT binary patch delta 21 YcmX>RelC1Ng#?EJ0|aialJFA-08JMKvj6}9 delta 15 WcmX>Xej7b3kE&_ From 01f89556d4fa855c404c910c91e334bf389724ed Mon Sep 17 00:00:00 2001 From: KondeU <370242479@qq.com> Date: Wed, 18 Aug 2021 00:27:52 +0800 Subject: [PATCH 06/13] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=B3=A8=E5=86=8CAutor?= =?UTF-8?q?un=E5=A4=B1=E8=B4=A5=E6=97=B6=E7=9A=84=E5=A4=84=E7=90=86?= =?UTF-8?q?=E9=80=BB=E8=BE=91=EF=BC=88=E5=A2=9E=E5=88=A0=E9=83=BD=E9=9C=80?= =?UTF-8?q?=E8=A6=81=E6=9D=83=E9=99=90=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Desc: 添加注册Autorun失败时的处理逻辑(增删都需要权限) Type: Feature Link: NA --- AutoDiskCopier_v3/src/AutoDiskCopier.cpp | 2 +- AutoDiskCopier_v3/src/AutoDiskCopier.h | 8 ++++++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/AutoDiskCopier_v3/src/AutoDiskCopier.cpp b/AutoDiskCopier_v3/src/AutoDiskCopier.cpp index 6eb1918..ff6e868 100644 --- a/AutoDiskCopier_v3/src/AutoDiskCopier.cpp +++ b/AutoDiskCopier_v3/src/AutoDiskCopier.cpp @@ -240,7 +240,7 @@ BOOL CALLBACK DlgProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) padc->m_md5.CalcMD5((void *)(&iRand[ui]), sizeof(int)); padc->m_md5.GetMD5(szMD5); padc->m_md5.Reset(); - + DWORD dwWrited; WriteFile(hFile, szMD5, 32 * sizeof(char), &dwWrited, NULL); } diff --git a/AutoDiskCopier_v3/src/AutoDiskCopier.h b/AutoDiskCopier_v3/src/AutoDiskCopier.h index 2e9655f..844ebf0 100644 --- a/AutoDiskCopier_v3/src/AutoDiskCopier.h +++ b/AutoDiskCopier_v3/src/AutoDiskCopier.h @@ -193,13 +193,17 @@ class CAutoDiskCopier { if (ERROR_SUCCESS != RegSetValue(hReg, TEXT("AutoDiskCopier"), REG_SZ, szFilePath, (lstrlen(szFilePath) + 1) * sizeof(TCHAR))) { - MessageBox(hwnd, TEXT("自启动设置失败,请检查是否有注册表写权限!"), TEXT("ADC - 保存设置"), MB_ICONWARNING); + MessageBox(hwnd, TEXT("自启动设置失败,请检查是否有注册表写权限(管理员权限)!"), TEXT("ADC - 保存设置"), MB_ICONWARNING); m_bAutorun = false; } } else { - RegDeleteKey(hReg, TEXT("AutoDiskCopier")); + if (ERROR_SUCCESS != RegDeleteKey(hReg, TEXT("AutoDiskCopier"))) + { + MessageBox(hwnd, TEXT("自启动设置失败,请检查是否有注册表写权限(管理员权限)!"), TEXT("ADC - 保存设置"), MB_ICONWARNING); + m_bAutorun = true; + } } RegCloseKey(hReg); } From 167b447a883db40e33897f7f3284a3d56dba1d4b Mon Sep 17 00:00:00 2001 From: KondeU <370242479@qq.com> Date: Wed, 18 Aug 2021 01:08:47 +0800 Subject: [PATCH 07/13] =?UTF-8?q?=E6=9C=AC=E5=9C=B0=E7=8E=AF=E5=A2=83?= =?UTF-8?q?=E9=85=8D=E7=BD=AE=E8=84=9A=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Desc: 本地环境配置脚本,匹配本地环境 Type: Feature Link: NA --- AutoDiskCopier_v3/config.bat | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 AutoDiskCopier_v3/config.bat diff --git a/AutoDiskCopier_v3/config.bat b/AutoDiskCopier_v3/config.bat new file mode 100644 index 0000000..d166dcd --- /dev/null +++ b/AutoDiskCopier_v3/config.bat @@ -0,0 +1,14 @@ +:: Manually configure the local environment. + +PATH=D:\CMake\cmake-3.16.0-win64-x64\bin;%PATH% +PATH=D:\CMake\cmake-3.19.8-win64-x64\bin;%PATH% +echo Env PATH: %PATH% + +:: The version of CMake finally used: +cmake --version + +:: The default build uses VS2015, if we have a higher version of VS, +:: use the higher version of MSBuild to build, then we need to add +:: the path of MSBuild.exe to the environment PATH. +:: And we need to install vc140 compatible compile and build tools. +PATH=D:\VS\2017\Enterprise\MSBuild\15.0\Bin;%PATH% From 2eb731e5da26fd3add0c92fb48a33bba5a9465b0 Mon Sep 17 00:00:00 2001 From: KondeU <370242479@qq.com> Date: Wed, 18 Aug 2021 01:09:39 +0800 Subject: [PATCH 08/13] =?UTF-8?q?=E6=9E=84=E5=BB=BA=E9=87=87=E7=94=A8Unico?= =?UTF-8?q?de=E5=AD=97=E7=AC=A6=E9=9B=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Desc: 构建采用Unicode字符集,添加clean脚本 Type: Feature Link: NA --- AutoDiskCopier_v3/build.bat | 4 ++-- AutoDiskCopier_v3/clean.bat | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) create mode 100644 AutoDiskCopier_v3/clean.bat diff --git a/AutoDiskCopier_v3/build.bat b/AutoDiskCopier_v3/build.bat index 8028c4c..36eaf23 100644 --- a/AutoDiskCopier_v3/build.bat +++ b/AutoDiskCopier_v3/build.bat @@ -8,7 +8,7 @@ rem script params: build.bat [BUILD_BITS] [BUILD_TYPE] [BUILD_COMPILE] rem default value: BUILD_BITS=x86 BUILD_TYPE=Release BUILD_COMPILE=VS2015 if "%BUILD_TYPE%"=="" (set BUILD_TYPE=Release) -if "%BUILD_COMPILE%"=="" (set BUILD_COMPILE=VS2015) +if "%BUILD_COMPILE%"=="" (set BUILD_COMPILE=VS2017) if "%BUILD_COMPILE%"=="VS2015" (set BUILD_COMPILE=Visual Studio 14 2015) if "%BUILD_COMPILE%"=="VS2017" (set BUILD_COMPILE=Visual Studio 15 2017) @@ -26,5 +26,5 @@ if "%BUILD_BITS%"=="x64" (set BUILD_COMPILE=%BUILD_COMPILE% Win64) mkdir build cd build cmake -G "%BUILD_COMPILE%" %BUILD_ARCH_ARG% .. -cmake --build . --config %BUILD_TYPE% -j 8 +cmake --build . --config %BUILD_TYPE% -j 8 -- /p:CharacterSet=Unicode cd .. diff --git a/AutoDiskCopier_v3/clean.bat b/AutoDiskCopier_v3/clean.bat new file mode 100644 index 0000000..03499bb --- /dev/null +++ b/AutoDiskCopier_v3/clean.bat @@ -0,0 +1 @@ +rd %~dp0build /S /Q From e6b4ad1b55c13f69f8f7743749f9c180884c32bc Mon Sep 17 00:00:00 2001 From: KondeU <370242479@qq.com> Date: Wed, 18 Aug 2021 21:55:02 +0800 Subject: [PATCH 09/13] =?UTF-8?q?=E8=A7=A3=E5=86=B3x64=E6=9E=84=E5=BB=BA?= =?UTF-8?q?=E7=BC=96=E8=AF=91=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Desc: 解决x64构建编译问题 Type: Feature Link: NA --- AutoDiskCopier_v3/src/AutoDiskCopier.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/AutoDiskCopier_v3/src/AutoDiskCopier.cpp b/AutoDiskCopier_v3/src/AutoDiskCopier.cpp index ff6e868..7877355 100644 --- a/AutoDiskCopier_v3/src/AutoDiskCopier.cpp +++ b/AutoDiskCopier_v3/src/AutoDiskCopier.cpp @@ -13,7 +13,7 @@ static const TCHAR szAppNameEng[] = TEXT("AutoDiskCopier"); static const TCHAR szAppNameChn[] = TEXT("自动磁盘拷贝器"); LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam); -BOOL CALLBACK DlgProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam); +INT_PTR CALLBACK DlgProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam); INT WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, INT iCmdShow) @@ -68,7 +68,7 @@ INT WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, //--- Program end. ---// - return msg.wParam; + return (int)msg.wParam; } @@ -172,7 +172,7 @@ LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) } -BOOL CALLBACK DlgProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) +INT_PTR CALLBACK DlgProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) { static CAutoDiskCopier * padc; From 3a48feb967fb6a809d5b08dc1c1b192ee9fa63d3 Mon Sep 17 00:00:00 2001 From: KondeU <370242479@qq.com> Date: Wed, 18 Aug 2021 23:12:54 +0800 Subject: [PATCH 10/13] =?UTF-8?q?rc=E6=96=87=E4=BB=B6=E4=B8=AD=E7=89=88?= =?UTF-8?q?=E6=9D=83=E8=AF=B4=E6=98=8E=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Desc: rc文件中版权说明更新 Type: Feature Link: NA --- AutoDiskCopier_v3/src/AutoDiskCopier.rc | Bin 11214 -> 11228 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/AutoDiskCopier_v3/src/AutoDiskCopier.rc b/AutoDiskCopier_v3/src/AutoDiskCopier.rc index c806892d588b05d85faf2fdb756e22c0239bed98..c92fadfef4abeb7b8f53714089e5b1ae41fa0090 100644 GIT binary patch delta 42 wcmX>XekXiGnVP6KLq0 Date: Thu, 19 Aug 2021 23:12:40 +0800 Subject: [PATCH 11/13] =?UTF-8?q?=E6=9B=B4=E6=96=B0README?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Desc: 更新README Type: Feature Link: NA --- README.asset/ADC0.PNG | Bin 0 -> 30728 bytes README.asset/ADC1.PNG | Bin 0 -> 4295 bytes README.asset/ADC2.PNG | Bin 0 -> 2428 bytes README.asset/ADC3.PNG | Bin 0 -> 21651 bytes README.asset/ADC4-1.PNG | Bin 0 -> 24419 bytes README.asset/ADC4-2.PNG | Bin 0 -> 101051 bytes README.asset/ADC4-3.PNG | Bin 0 -> 25273 bytes README.asset/ADC4.PNG | Bin 0 -> 24610 bytes README.md | 110 +++++++++++++++++++++++++++++++++++++++- 9 files changed, 109 insertions(+), 1 deletion(-) create mode 100644 README.asset/ADC0.PNG create mode 100644 README.asset/ADC1.PNG create mode 100644 README.asset/ADC2.PNG create mode 100644 README.asset/ADC3.PNG create mode 100644 README.asset/ADC4-1.PNG create mode 100644 README.asset/ADC4-2.PNG create mode 100644 README.asset/ADC4-3.PNG create mode 100644 README.asset/ADC4.PNG diff --git a/README.asset/ADC0.PNG b/README.asset/ADC0.PNG new file mode 100644 index 0000000000000000000000000000000000000000..f5ff86d0a137ef766d3ad3aac0918c7685f18ffb GIT binary patch literal 30728 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 DdF<15 literal 0 HcmV?d00001 diff --git a/README.asset/ADC1.PNG b/README.asset/ADC1.PNG new file mode 100644 index 0000000000000000000000000000000000000000..c89ca90b4592557da3598a18b3f4c3d9ce44b443 GIT binary patch literal 4295 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 literal 0 HcmV?d00001 diff --git a/README.asset/ADC2.PNG b/README.asset/ADC2.PNG new file mode 100644 index 0000000000000000000000000000000000000000..cbb58ef3487bc586dd66f8bb316e7871ad2d21b5 GIT binary patch literal 2428 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 z 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 SVLV9mnx@(V)oNwi(EkE!*1v@S literal 0 HcmV?d00001 diff --git a/README.asset/ADC4-1.PNG b/README.asset/ADC4-1.PNG new file mode 100644 index 0000000000000000000000000000000000000000..efef7fc0366b1b050b756f1bca31a35777489167 GIT binary patch literal 24419 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 literal 0 HcmV?d00001 diff --git a/README.asset/ADC4-2.PNG b/README.asset/ADC4-2.PNG new file mode 100644 index 0000000000000000000000000000000000000000..321a1991b733c71669a5e0f5affa028584dbf377 GIT binary patch literal 101051 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 literal 0 HcmV?d00001 diff --git a/README.asset/ADC4-3.PNG b/README.asset/ADC4-3.PNG new file mode 100644 index 0000000000000000000000000000000000000000..739b100f21aaf5736aae3358787fd12edb6395cc GIT binary patch literal 25273 zcmY(qcU)7;6E<#_qS7H!r3ff3Q30t@zyN|&r58g`YKVaJ=EVdl0R$9~dg(P_lrH5O zNdQ3*A@m{y1cL!W@4N@@{l35V_Xi(x&e=V?J3Biw&ogtPj106dGVwBSvHEn-HJ_%U*6sqL2l>O}Rj9brHgj<_5QEPl5JW< z(!@g)U+72PM!I5I(!|zZ)ciqvQ??Eq&K=?*bY0^UKiLe(Tjky!P?ugOWPd2B$irwx$ zFgPU4RISrMHRCgA;H~Ya8EH2^ zb6p&*6oB~Ca$I+P(#m!+$Tw~;xPFn3a4Y+~aC19$b9VLI)cdJ@_4DfA=PnKnKzj&$ zVWZ2|0zRJ(hEdMbEqzF?MAYpc#)I;alk{JCOtiy_mr*VEkgtND)s3qMq2o4d1-|SX zkT#aypG3OyZFNuF@B64GuG5cu@MYPiO|b3Yu}rdu6mf(!e(t#bHrY9^D#tf!J< zEzz>Rd7U>Fme=e2$j3zHwY8DXe^*T($}#l(TK?ZQ$2Sy4m)m`qC!yb+Zvoe3rJsje z%$X?*m9+moKIi`?x|V+YG_NC?-qop+a`e`!Z#A?`7BXQgtyB4bH%_8GcjZ%jWsiqV zN8-TEJBi)4!n=b-rP_-@`GHh>mC5QbTvp&rGqqz**)J>EC-~#Xun=kjHG$DDYn*4U zSZ>kV&}>s}MiEo zGn@Gl=-`gs-{2nuLta{_%NVw{wJ2+pPrOWWdjC1p{<9pg!%C?{hPFw|{-(6{-&IQM z<67^a=cMuWs4nH?YAY*^qz-lG5^uLwn;7HH;vOA$651rM^@+d!w~)MhMRE`K>7=ve z+vVlX!i5HPVF!5#B(8~P%`=xf(QP@SFou% zU}FanQ*RRj`ziUSf9*V-&Pu*gD@EKxScUSX&j@&F*{dT)Ju2QcKYogti;X?_BC96+ z#R;L_IpzP93&lpi&Q9{=%jDZooFuEo)-ZIky>^M|y7hoL$HQ<`8QxgzZCWVKx69Ya zh08&S*TaQWwtws15OconvGGdRBUt*TL0?g~=;Qdw>I}r6!L`kTgm?Re7g|eP6z7IAy&nhjT;?2f|8wS9$f;a1&AL1+ct5ng zes`l7dYTt0Afv7IRQOikEw)z6C=vH%1qO=LO$-}{vEfiZ`U&RmIljMKchbmuHxnYL z#D_NVP;m{1(&o$d0;nY$)lL;smIXC2Kf-axJmE5twh z2I+HFibzrOvJlS${~G>@6p8>h*LqVTbhQl2)h44&dj>U(_{6Iq#y{i>L!Dhe@No#< zbWs?HHLZL~Lbs`%d%_`*7yX;!rghhFQO4>SspnC8h7iMpjiD#M^ZElP4X61b%?IVM zT@Vw(`%MNvxtH7>LZm(3PBe=A4G(zbUSC~(bE`6t)b=qu3xsO1ed$0Hhuv^ z(HGD%aL2-=EYU?_m~G?&Y?c3n}X6ATbYcdlE0nl(?{n;72DoBgT^m7N&N23cU*9D z+o%**mQnTDErH_}%SOhvaBc4K#)etd*1Y3nHzoYQ%{h*l16?a6=xU`Hv^QD zlH)q_&j^-Cgf`{!{fgi)l;Sp-FfV1KTNJ24WU-QDfI|7EEmKJTk`7AQ$VOJexqU9gJrNj+=G~&~y z)C;At#kB;{tWs>4b$mf@ZYx*GWkU3rhuR>FB| zwFI}>$=L1EALfq>9CQ>Lxy6h0MlNr}n}8%f&T_zxJO*uC63fAdNdTO{K<_!!A?Wz0 z^DX>m6%RBxYqI{xkK`e1E?zp2V-h`f1rD6YJ$v6=oCvu2f17`j#2z=jh6^mQ6Wfz#FuN z{CWk*0}A%dKobq#b18c#kNdHmOPTnlU2^n3aNV>ZlPK_5-E&=Oxw52>+!R`et{Gu?N8ibe(JmB zMKcx4w!#J9Qrp^y*JOuDc}~~|k6R9SQ(A`CeV-Y0QteD+4DK)cn9oN1nrBGro-=PC z!o%a1BJh%XLC-z5?tN)V{-l!U_C2FdY}%kb5x-=`Bx-pRd^g)`M(d^v5C*Bi-S#|u zhH-&uI|gfkWmgP;iWPd{e)@zwsIV2*cudf^$v-#_ZMB=uyz-kKwBJDgw3o1Bg~iRM z1qytj_HfK~)v0r9n5CM5>^Ec;FHct_<1Srv=0hj#>sM4NOXO<-=H^d_9v5V=O~Kld>SxL{A}!VI@+)dT@H?Qv z^>P~A+6iC$HNpcLw2a6HyuqH+u!J_DYp3`A>p0F>?S{Zu_J=qWsc_dLE_(^oq z<*TSITZM9A%c}cXo2dIqOJ}Y-9qu%y`L|5I##02(?+%r0s_m)QMA0OtNJE*g5vo38 z!P^n#Oiu_ydjg{7SjUUc?mfO$QtQx<6A?aB%FPjs@);&yB$n}BBF~OY4*e?!PYPRQHLkfLPhaz&dp!=W92!=@Kzz+PcLXBGXSc(0E_#FO(Xmb zBc&<$&HeTtnt;+8axzk?zd=R1xd2suyFncy2PimE2QG$Y{Xlv% zKXAaZ(jyO?v~s1Z4L;N*)1w1)^m{!lG?JjhAnf?pnk6_|rG&l5u387b21 z@BZOp{_-{IoblVvZYG|L5wsp=NvT-(dDc!;YTLpCf0X_t!^q_-k_18(<12vb`Ifyx4joQZsOup=)exi?gN~jfD#>?riTC}g+J?c7C26h#qaW+(5 zeS6*{&rNTqV411`d2qdAwE@{%?YIq$^x@lmpBtdWH!hEk0!Pm4)cNVB%@?L)$^Y{6?trg{a^D#g(xEo*zJf{u~KR zO7}i!Jzu(+G?22DFxFW>>J7N8`MR!qK{>rI0OiI=?C`pCBnyUpEIfQ5scK!# zU47O~EXA7R%Ru4I6`=*hY7Vc9TfW_Qh;^B_qtej~PPT@U9CHV(W6V*b_|&IAg3IkY zJaug5dI$1d3uxO{At&oCvbs`4;Ej78z%9CNJ;Y%3HeJk4an67 zfv-WKy83rylOe}Y}koJ}1g&pe$pja1V3xKI7 zE<0gg2Ll`Beq!&ks8}{I#~GFZdl2p8VgKeSg(diI>-%;5K~6~Pj{lnhHhP!kR@R5LPM_ZnXILQ{_B8Nn~ByxjQs{| zX2LKqgX1y$bs%zatT>;4l%kp+=tDn6e?Qg!f2?7ZALkiTa%R@Mip!lB&S{~RBb z1hC!nIoAr%X1Ji7)1SnBJ((JAYd5;OfheGRy_8oL*WlO(cs?#XfUu<)wyJ1~5GVNevX_INh*Wd9N_rr2 zLh-3vcC@PLoRImtK|`-Bq3AZ9b=_FDGL~wYcH&AtKa(hu3ri@LRATt~AS0)vzpSsB zXO*G*TI%?sp%J&MYEA**)C@?CZJ{84CM(};vz(YPLN@A-Xy??|>3gMCa+^HC@ z_|7#<4*z;-y_#+`8dI<`psj))Y$M6wn;}q)xg1g;Md6*=M^=(k1r(=D+i_AxHP^I< z1Sup@0)FjKtNJP`3qz7SeQ8z3Ag=oJ!b$Fz@CSC?U&;m{E^}AbeWk|-ss(d0Vq@ee z0rP>M%Q&9LE+X&&^z{MFP2s*G9gvXf&|&Z;^`WcS90RWjG4;HtCP)(sv{4Wju*lKU z#7(uhGtUl_dA`39XiKZM7O}nu=a=q_PGC(mtN=U6Ns8(IISmSI^KqPD=88&zeC$@pt{xCz~B!7Kk!ZlkiEXozKhjktUO0B z^zi3r55lIn8<*SJTI;*Iwl}lNOB*~tsSgfPqVIePapPN5QRtoflULHaAKPBAlUGqQ z<~9{KjQ$otRsVKfuzCxdkE*?~7+Vy#TlJEB_fZ)p;5jY1)65vOX{!O4rmG$7q^IHJ zQ}FVRcyX_x<=yLQQ8Bt**wKnRv8n5>PJ_!&#j1N-%dwP*jY@%>)}KhEP^ADur`C- zy@a66;3R(eP7C6mTD<{1e{zGqxf30*>wf0%3Zdwif-QU!{gtLE=UGbM!ac%LTgQVX zB6A>3tNa6{ApLmMCV7n>$3~IL;qR1th06!87+)7I(@h4CblmK0XscvV=D?{a`Ei6e zJ6tjtihI`H+!k$Y-N1sy;1`+`rPN7SH?}`g3Zb!rZyx=fD)=StJX9OBpudLS4tIZo z@mw}JGN`aDu!9|O)5a>8dhL;*y+YFBmg9(eL=^{0(X7@><+gr1dW`8s))Jq$_zt}} z)7tvu(!zpz#WTmnyqo+>pLcAu<3XJ}Un1IWir>Fs;NOK`eRwLy^Hm#Wp9PwC;NPTO zvIBZAqR=)L6x=BGzg@2>n1cxbCaLvd-nU z5fUOJ=E@&}wcMRAFQFZp81)McFno8}SKmkrKm^VWj~b?@tiCEJ`lcJ5c=`I>;ql7{$#owWW;$Rutl_QGUo3UIJGkpnJ;~GlAJCrL z72{0I6qPZ@$P(tfv@Jeg-%)@4+lAtG5~X=X1H1i*-}s_xA#7eZy+2QafY_Y=MD89a zA@_3Fd1y333L&!Zq&{*3v;uE3CrRxF2i#q#K-K_c$gft-9i8cFPW1IthALRj>CX(y ztB|`(PSQIrpVnHy)_s1pH7A(etloE9P%cGfk!iW-aIc5&^UWSr3JJotzcbh}Vd32Q zgcEje@h(3(yg$#nql2l8TTg#X+wbR~M#9Ymr~W&s_`p$I8`8`(l4bWD;&r3;b9+`& z^OoZCkP&ZJ7s0oe+B8~>J<8aY6QFdufBigNjwOrL{kkw*_4)j3DUjnCWGJweGlE(u zdB@%)`H^bSg%(8TyY?h`)@FlL`fc;2PPaCl{=5Escaz#$PlT)~bwFA-ps^IXS3RZs zGHRNIZg{w6$Vaq4n6+>4WS~@ru9wBOakR2l4PV9>C&*y&9TtWIzSEZsW}dz+09nJ= zNk;K1h+UfTd%3&KhUhb;}*Zgyxa~=#zVxz}i&WCM2O|`h9%q~ycOpklfy1^$>TXFK#FV#!j(3-=s{Z?wD z&0^h6631O(^Am?tLI-fs7vMm;RAu9b9im()9`EnKcwZ|~L2VW7IWkYzEPn$Qw{K3! z$gJ}gUvYl0yANOL5z>gifrt;n3^l+07;i)i)$pu*TG^Io-ez0A&A$fezHG>F_x=T( zs6FNffyoWXO6~hZUi*)t7zn9I+MCvc;@u z5UT8JKOY2})Y}nUUA+5q{G;Q#g%VsWJvK9P&GBscl@VQ*d0n~$bXzyR<#4yfUN0+< zdQGv}WvIt`l6j)Z;p~qI)JEvqqUDD`AUHMI`wKd3@kcCQLh@amMy@l)$S@gtK#za5 zH$J&PZnZ)~g^k9dcy~SyY`);SAF^cOd1hzg<7R>1QX)B=pksDQWqUrVgDLm%*0?324c}8tO}0Dwuj}TPmtIY0-#@)|+W$q%rnPqST7g_W zFn@KY?J-Z5$j8w-R-RR5+EQ^lS^b-(esW3V7X+PTLA7CLV@`N~ZX~0=Srn^QWDd6m zTgy`D=BICy8&f@?=GDxlTPS2WDrCXhtz%AoQwi9>_Bm`1f4172T#58Il3(uwq-IiPkeO6)>tZuV~f zh_?C6^lA(FP|_oUySKXN!xX`P_D|qj)xsZ%g(eW1Zbsdv29ZCdbhsLcVN;Ai9T~kG zu@cb}u59rHEzZOE$sJkY;m2H2WYJb*v$(o!E&h9;YjFz~0V&A`CbGe?Q6iyV+BUW7 zir$;FI%?<5f)=?{bzi>~6)dCjczd-b5b6Yhx0>YLgNR{Mi)YxbquE-1BdQ}O53XUW zY`!#wx0U&qM=uFLf`52j++;eK;6Rm6 zyPR&$8$gu=mcj18ZJ?4^#}Zw}yaNxmmfp_M;;m4&mTgmzOMOJpEVKO-r`(Bf2sx8~;yoFF5bn^AZK!R3&IssC;qkJ*(kX4}OP6P9 z4^<7`J`zO(VqDj|y>k04uvhN+;6P8|w{pTx($=RZzYI7-IXT2qc(r$(ts9klvd^F{ z1n^%iyVoBHrY`YJAwCfDF*Se$JLSiuwu)A>f>%0z1;O^Dbhj#a%V0~{F_ca0LMMy~ z!BlB~ZQ`~<;l71I+bxBnkl1d_$Vi*Qn?7U-hZvO6?(hxxE8^jnh0NC&#Vr}3Nw%qk zA!P>2$J$KG%z#k}8R?{6891@Z-`$7{tSJ*1`B?kNNqxy^-G46P4_&k2m!*?XN#jdD z)tlhpMgQxpH)f2I-0IA;{HLRSo#kJ9yL4GoZfd@*q*MF|Yn#}+IY}PVP{&!ZtDq6V z%1gf+@c8=|chx^O;M8kllE^6d(et z6}U@#hcYHc>Nez+lol51VlfP42a~&(k}lNj5c#%J-@GS^VfciQdH`D|VqDox(qa)= zZY(YGj2Ch}BQD|lD>aR4$f)iI;r0!Nx2AmWolq+M1JheUhycQTWcd>V0>kQ=XY9sk z7x){VXUl4N+^~R*`*0hz0W;9%(xg3B@zOu}msd64^aoUz?B9pRm?IW^Vjoj#vQzq+ zV|8t6o0KctyM~ApfC8U&t=R%NZ3Bd5USNf%Wg(Go-1X#DAeb*v-&;z&w?o%kZUXWe5>3k1CvYdD-|P zX(x+qS_f_uI$#CT>tf2wdf^lFBLkOYamfxRC|bppZ`K}5WFU{$ZTY5u1q9UI8m=nN zCxhLR5%ApJy*IX%TE&{K4DN*~M`N!|~}RMZ*Vyid{U z{Y3^R!k=!a8cbDv`#hE4I$@1krwwY}vp72s3Bcdl?H z`FCwPjIdP8M+W)ecPylV;F1jCW7$>~bbYn#s>P`%SU||u0zq=zPR{Q_;1_T=Ob05? zS<~s}{_&H())&!`624q#VdmINNm6yE`HQ$f*_e2iStO|UE~^r zDiI=;rLd8>Jn(d5qpxfb4Jz~WD)!~Z;m?*vpq>9jz}zF~;dakU0>ko2;+`&|#1o0U zjzVOi5GB6S*)eN)M61I!_w3i;+*mGz4oE(L080DwWR{DSG=JS&d7zv(=;c70S8*J9 zH~g_{P-EQWhIHH)dq_k0RR@b~W`)48jTFoPm7d~EoM)WMpO%z@jVaa>B4se1XI7N_ zL!7<=$Cv9~Di>_&G*iy*@PXZ>A)8|LTd-oYHe6*w#!Pj#26f$E*gbP@E{^Lo;<3YL zG0}Jvwj}KmR@l3YXB5PbwE0;+hOyMtDu-c%l{m0M$d1O4I_cK5#b9iVUb7|qPgJ(b z#u-AS{i%l^)L0BT;WVGihgTh18_^K)7fF$MD{7qH?8v8cnx^}w6f}kRWNE{1d$2Iz>yfqs3;!Xo+Cc!NGujA$ZfHOh!kQVt;!6d z-J-v&8-q)G8ZF%5=;ga7?(u8pGNeaer1S-gGYI7pqLbJ7{ zbM&2%{K?-~_xI|L4TqS=Gz^>gG>HA)&@D48Z*Z}&MgZyp-)baTSJqG3 z$mA2iLA$J0Su#-?-xUJ-2T)Em$l4eOQ8c8jPzHNS{jr=!g0j0z&A>Ey2$C<(SsQ|M zAI<^)_~lY(zU+Mp-m0)>cHOIP?tLs?mQegTAi(qPToUbnpwU+K_fo<;M#??E@*42; z=?>z+0wkZd%`4~B#%@0%oFCs$#l^nTnN7I}a70<+Qn0;@)&rZ<+dsHOy;k?Ot*gLa zw?|SZOhB1+g<2pzI;r=k=E^iLz;;cOF~M@b$obQWodSCQdx2SlLq0eTv6_|5i!dw4 zfxAxy>)6>)$n&X#2D6%>1~wF;m*wnt+l1CEDSaoNlIsY7SPKyr5ENmrh2&%T)OZkdNc1Cj%9uyw$OPpC zMh$0d6jb7R(OwF&&Dgn|1@q&j)ffB+kxdhlTol zKFjlv$Ic(_(|eES5s!Var%%V#l!qyHfi6D7Pf{MG*oOxA5V_26*#ykKz4+>qfNLGK zv`j~M!UhZw4UR7VDb7*sLgky>g01(P8p=y)m0!vZTCD$Nm-I+@QF|==a07K{w!hnQ z7_=I;xqXCJsnEk!Xqo-qG!I!WY`c?c-m>#(eZl^);jd(r8K_B7Z!=mDs+Dj={k)Ul zgpH`i66*X{(QMGsz9TpVBvO%CfNyF1mmT{5njBGdHeNiKgf5oCUOuOaxq5%a*;C9$o?N75L?gDR86^6mOz zgSIDczum}uZr^uc|6rKz)t3Fs^A0B@iwoB3g=X_P3PX=tbHa$K7`CJ*OqKB-ZLabq z!I2g%-52QDTM0V8@QdcFpl+^DRJaFJ75v@%?@j?|FD1qX**`0Gt zi0~n_dvCoF(DhFN3&55mMg?;kvF~2eib7(#7a)Ks5y3hyq@aERA$uQ~i8776it)@m zz&+GYgV?v7rTZ9+C?`8qhLocac6Lc$nXmd>dyb>=tvn${TFe_?H^)}FTt1e0yotFj zXdRtK*uW#{1p+ZH;=l74$lDP9p{Sjz3b)kYEg-Bp+qxYF8K~UlnNE0cb$3{g^ z!e`uLH#BLiIlNItD?nIyUfF5Ep_vQj{#S5YWX+}|7hpFFj#LWJmsM_o{L=nb$I`cl@5{|?Ft!BFqIkEK>(*oL%A{y7j3J)Gqm$^Wl!nFzLq6w^jJ ziHA7Mt8)V>IA*-^aOEqU9{IF&Hf59x(Vh1Y&`py(uBZs=~Q$<*O9mB?0CB7g1Sna^^7i@Fs-1u)_m~M$dNF#~5SieKMh)OBBfq zKs9`uV3|4)znI$}tfZ82NEkevJlLpB-~A1QTpnhx>)PH&x2nAgV%hu|AGSxCa%JC? zTzoY4(d#g9Q^C?B8tvH|ZzBBsYO)m8!qVR}e$1*Q>1_;Yz{*74PTk1{>|*NyeQla< zYI+?D>eGPd&+=jt7_Jg-*F7U*dJWQ)D;A!s@>o~4z4mSI5$=a_5AK_`Qk!ffxnmX@ zJ*>sduVZZ>fTsiuXit_oH&O!x?k3iY=i^OWMs)g<5^ue6s3~}%g;sd?Qha6LT$&AICz>F%x>)d9msIDeAU^FowJ7YB?MpUTd%~7Fflvdnqp=W!O`q&Z?(Yf;F&qHn!%55wsfSn7b!b zgn4_2c37K{Skk?N&x$)NlR~?vCLRBmKRMW*|RouUBs1 z)gbN!t%tm`0C!x;mcsT~Kx*QRA-&pK9ZaHUW`FvyvE7uqVIiuaP_dyT-i({tawt<$ zgx1{eFGS-%_R2dqDhqLwLTRo5l-Lir3#w+(0`VLzw2DYu>OGP zP10HaIAm3_IU)?jRLB9f80Pydd$SJ1G2GGCuX!39f6i)#m{jM~%(YF|hy2x@gT(vT zNzbITIy&5y-Bf|~FWQ3e4oO_ExzAK5@>xS*=sfGcqQox>HId#txU5xF(v!p2$78Tx zN49<&$4qg?eq)7MLZ+>Ny1!^PWRnAWiBWXKml&DaTsvj$uKv(%H46pg#bN2pPy=BsZF@t%a+9cNkAS6#2Ba4-`Q)yYP-UA1_Nra|-9{53VW-jIB832_c) z@ptU-eti+_H!=H|f3~zxL`O%Qf9zaZT`iTbV&cl}eFXQ;?qIHh2dlLVnno|Cr#0t6 zNEmk;&@RFw0!(#FW+#nlm$Y}N;YPFMApaH-Y~|Q^2vuq7#16K(#Z=NA*at(ZP`b0G zK>U<@s7+*TFnNAB79-{9Zpt%MhTm6vo(Y?4viUj)S+Ew9lOHk6S)io?4lcjt{7MoN z#m*edV&`XjQGBPJujCZ^oXFtT`Lc!bE0$VgYlv@n?F^j7h6bxV3c$5XQ6tZMMx*S# z8_imAU@PIV3-B&m$XEGz;Z4-va*~--vr-8C7^L z_t?2ne*-lKCHU|*Q8|NQ?+d{G^;+o~r;9qv_KbX~jpTG5uLU$Ecs|fg@PZ;88 zvASh5b)Ac}bMyP;&0Oy6&aI*MiClR~+>tgZ?r2Yop=g>>Ct{Kd38n z2_#CQ3Z@(WJOcHS_RDL9XC_#-c{_B~2U8AsD}8_9kZwZO>3yEoPLu|_-QpxKd#*SqG6 zPOWSE0?~Shua~A`*;c&W5Y{fQf{zl(6QCT=UIXFkBqLdDQRP8&?v=9E8!On-CT%jk3d4X7 z;BUmJuiL7y$u=hk1I0D0tynI#d7is+;!CID5ABzYSKsnHx5YkeNyI-TieM6I0t(Hs zL$2^vZhbvaHHwmxD*k5Bv&x%f5POy446V6Xtr;L^X0nj*wMdeKWcbKhqRG(*!^YDo z;%O_2>;d@JG4&xU_Xj}j0e2f*Ey(Q z*VX9;2;m7KGK_ukFytff>OTbMeT(idokcs&8r8~ze5lHL-QAwkNAdqJM$tny`nP<2 zz|QTpbbB4MP>^10;KcFD6*8{t=D4i`UXyRsCcly<6l3X7A8_XgOo`hgM06;b3N8`s8+ea7Nye|ZJ*p=RDn^;ceSRoWAvO63M) zp5Ny`M7`}~BefdHb0MHG4sd$?gC6pB?m!;NW%ZUNgj#Dds{-3H1F?NkyZyUU5nmUV zBS0vNT~APsH=5WOY>rz9tjvsAOTf$5m?eEpG0N3_$!u-|k^xQ!W#z9{hV`VHtBS9D zyEebe=UDL>#@0(7!LBrb;9ULN99x&&2pxRQl?R}vM(vWw1;Dqxl7q+&;I}KQyL?g_Hoo=>jqjd`DXhDEfv9DI*1y&%IeHfjzOE z3f1L@0L4SGJm(wiJ;G=~A*|_+(mjU6_tirqCP4j@TJ}HD^s62>&R`PsnU3&r5?9{l z9Pf=O06)xYm#lJ=5^G@7C04D^k>z%Szw3Syo78iBJ-RyQOmcN41okBVhb{qng9SyL zCtH?-PqhM7C4;R1G{c4P)#8nyE=4QKin=xq3Ovz45L(dsRlufpp!U_&?_XU##*-b< zY)PfI5LdXC;LnLK3Tx*N+5-p-uUDrvB$tRjUB8I6@;MDgU2dbeC%p6__2&k2O(Q0N z=1p1-0_CZD!1p7+Tttp6dKDt9!uUE633d*MzFD0&Fi0c7TZ;xu{julh<(e6sDEyN0r&A}Ku>VAUSf%|1&g1+!Au%eo2tW{Xwz1eB3?KgY}qM34t%GO`Z;+#qr{A;@5SJ zb9F~6>(9td0{N)m<0;pfYoH292R5Q&*#GbVu%=~KCee4IM^lO==%CpjjBHY4%5b#4 zt(A-KSpIig1m1cCoZcO4{!zOd@WwX;onPmVwh*Y}&e2Lb#|gV(_%E~v5JOs3yxipL z002RJ>w8w&UUtYy`c|k9qWfWiW)jD$Xa~{YzlKc**#Bu`>d&g1V~#-G>pRYWsROZ7 zK%x#PDnAyKPystYsnCx53jNpD1f-Y_Od|FFKZ&$3c8}evlusS3z%bYTH+%L6$|d_M zFyQU~cR}nAT$>SN2bGo20JCHaqR$2zNT>X0t_e+~yj%14-jJDD%yZO#5!^i##0J9} z!t>t(W%3LFR{ZsrJn;A>+Sp;p%4^|FB@puiyXNo7_YvWb6kvwC6{t%*)dg65k=>2& zgklPShVCE93)p{}d^Px>cCfC4wd@LZdbF<9WId;`ARnN98El1Itu>UQMuQDP7)G@t zXRE-0058$RB{~i886`)I60n!3?Z-0M!+mKWGZy z)d)B4Jha~BjS32BN+prpLu7LxRVYgG!%S`xs}%?tN6@(s6!rnToE0`9LFJ+xu8JQ= zNXIDk59o%A6;Swj)jBqgNHsL!)7+%fmm_`&hD|iYY zNZd;F0|e2>O=6E>6n(G6Vw*nV>VWT87`QY=PVqom?+%S*{G8RO<}G0)8;D>d898Al zfJz)g(Ph*1X!?_-{~U@XKzar#33LueEK}tb3PVO~(9|Xz?qhS6_v?cnhP!|d?K*D- z(nJGj5axajE5-vr!~1B@$sjlQm^#G7t1;`t(Gq!mn8eAUc!_(P%bbA~q?@V3nj`TL8-^4v>E6YIYbKakX2ea%a0IEQ=F1 zUSplU>4o<%=5F0!iwW?gc$Xs{_V{MlZt-N4zHpa zbq};U@TRYhq*;uKcvcR0{O8n*9O|oiGl4G@fCD84_^IjH^v~fKws;-k7j+P#sxi6% z%{Izv*94^hToxLM1EYEs}>o_4Ccsb2C>3H3#RW8AWS2VTnh&KqS=7bBUr^ zPDvhPDjiUV>lFY1Tt*Qibvvvf4kDE3gg3xggs+UE`Y{L{PB>7q#l^OQG~noTX>1s4 z?z>VgmoA6v5gw2L>>iMG3AF-EnSwgRjE?EgtvFB10~^g&h*2Q_ zgI)YJ&&nC@32ymGP-cg>*@n@N%vRZW9p<%Ld=g53c0L&Uubd`iFEPUY?D9U#pY zxG?J#Tp5dd)jw>-7gO!MXC%$Nx$OGHA%RQO6}tzUx<^u*-JSWHf@GYVImph8&E`$EK=5W+x?3iQNX-|A?$3tl1OLLV}QE$=b07s5xkAFG;8O{nX^FoV~rY=TZ#>)Z?!xK zCq}Lc2fYHc0FJ;wF#W%A#F&MHk-?!In=m;fU2|Uf!F7p%ruFyxs*@y0$(0D*bJqIG zslne1!HN9$G4%P~Jn}2`wH#^$pGUDrBb`M3m5!?LsGm)y4p^gb9xeMD)FC{AEZ{e0 zJRUHYNw)PHe>5JlIZg&xD%0_xr6w|PVLl#qxKCbO^!QQ)-TxhNUeN!A^ogaL-A{ly zkq2f-Q=@c^kh3W4Yav&+$pHrTzIvC|d;!4fbk)*dgB^$r(5qNyQ@|RV!1pN70}3_g zm7uFxTwA0^TB$h;wHJac^yYpncOz;&JNl9G>L28Y+8~p)9pe` z9v*C_?=BBJ0g2b-e^g{|SOZ@vyjOWc9u)zs&eSn_S(^Y*aHG{?YI=cfw$v0JmGqbXj zTfR)QxzqkoG-N}P3*d@Q06pFnfo1m&+iqV3TT+pia;)UCcx&@nrh$@Lw?=Eg+q{zX9IGHMm6Cw;)LLWLI@HXXkN!EzAkImwoJvokDx^Z`> zhcx)r;9AyzBRGs>Q(~e_DEU4vQ-0Rfv#w+(Fp+JoB2*}ht&6{pVGA)KMDi}UJ@4)e z8d6UOBBOGd6@fg4Jb)Xm?0SVxKoul=?kyioh>bFg;ZHXWf#cNMSj=}HbUTIlY;8G1 zR~^#`w?pl$gV8b}|JDZmKbaI)?XD6(a#nK7!xRA<6Rz{pu^bEaq)QmS=zd zp)!fK!UPL)apu_Nd!XKKqKd)a-gcRSqG;O35+H5>4u;K%>LG#K!Hph5WtaL-1w3wn zo?Jq?W*q2|8i4`~5L@<)3T$n4MA*w!0Z5lv0^7EFep14LaQ1v0e0>PF(NATIw-Lr} z^txg1G5)qg8^_r)=MkAi9qL$wu{GQm;yYWPcMr__Uh>U&fF|e+a5GUdem5Jo`bE;1 z6=|Kfe5cRe&G{H_&(oDpi1Y^1KLOk4@ZUQX+oQl#z(H;dInenxe)x@Bz5vTEhCS3* zU}mDIy0loUesB6qnVqy8ZM;KRYI^>+eH;*it47Eye)-jSdM(ay8*d}c9fP_Klx@`*f#wVi zK`etJ61m(~kkYow*p@;m7#nO$V=?bxYa`;cf<$Psp-ZsoyB2U3-9zy*ko^EG{_U_U zk*SV%R}XJ-oqUd=TloCF&3DiJ)1w()X3>#AVkGSry7!mqdWizCfASGPb4TLPZV>D{ z!^G579=Vq?5NbbT!!4HF#}0D`YF(Y>T!|ppqvA6JkQJ%~K&M2A6jx}RbAXSsIE{Y| z^shPr6E@$tj@{F4H9u+#?2}_9pv6hs%#_X^?<8U18nC{{_x|7K|M&MBCQ5Ifb{R{^ zye9dg;+WC6KP8s@O>xp@+^bWDjH{in8V}v2k@1MOQkBKJyavD>mVH`mC~MeV{8R=c zq>36gCxXg=i^_(>gWa<6@$m@5u${h(sremybifY-V*?qj#3qyLSc_|+2dmkY%|Jb+ zxr9MRaq~V6rMTG#@W|ukOrG&@E+EOfDY*Fg=yP$hVdzTIuZdQ*=pe4m^0AhQ=5`<_ zC#Kga&Mf*)cA^^Cq$uDs20g$+>oYG|0n0v4)ji<=;>$}wBp``3J$JZ*=Bf4f!8a?U zd=mO57E*X`eoM0rT_=H!EJCvZIMM_-kPNegt?1Qp$H)g9FxIp`M@SN}-)JK#?ytnB z2j88in+}BvPu6%x;Xnz1r)Gav8T{*JcFDn-;bB$1-}2n$t-cFPlwUwpzAJmXW`y8> zUA#YY+|J#vC@wRw>VUTFoNoT-5B1;^*+4GL)n~2MQ6r(RM(5IzUtdS6l5V;A2qIam z6wR3o8zg?<&__D=taPfLA5*t7|0?O38~$Bqv5(|17xr{OCaMSbL`|6 zNwHKSJ2;V`^8p}c_fA3&{Idyl6Yi;CL7Z>=fQJ8?76nmV=Uv62C58Q)Cp`{KNJ#}s zYs4R>M*{&!G;>L#c#)Y@%IMx1jLiaxbgs)F~iOd3vH_laQ_?ZJ1I4g^mH}# zmNf`zqn1efClwMV=h-pqE+6?o!@$0zw>l>@GG(B%RU|~dM7tzd>g}8GAPfos5wh4y zn-I8r3-r$!IdN=-MK}l9c;B|*6i3xW;CvdW#%!l;nm3cVS~K6(fij%I`c==m?S;NH za3*h?VN)Z)!u#{u(9$eGo8dx$Ld}E+&3??@cVEZI1?TL1HE;f*8pi`~g>uFP+()x* z@-M25z1+GAWKZqf3&F18gdufhf#%?kpKiM5`Gzm?VT{xVdVaOW$6lRJohV$U{z+vA zzUAm^#=?7jhOFRP`ho=jDsCZnMzgi7n}T#@tw8j!zJJuj4tXxJ!5aNvLNDfmD->r5 zb?4$uf;?rg<1-@;W@z!rL(@36_TM<|qfeDMll)!N9nyRn#QO)X#Oawoj=<~g<-}U`n*YBUXX3lxedCr`9 z&V4`6eZTJaEE)eHyxbTXXzU+0LMA~wOc-0E+Ijp%sjXTf z#X>A`T&Fi z9Adb!{7s0$;NQBZ)}OeBtkt*k(#&usiS6odl79XPZCb%fOYX^IhZvtdpO?t@RtH-G&L#(Q2bww}N=V@qvqC zwF$EFa$EYc^2(O*wRy?3&#JXo!JVwJZ(M7E93!|sBe+`XUlerf!Ww~&6s*du@V<5DK&czh z{IWPcCris^7J89sAb(5>a^+_JSDM-yipHDPw&-#kUV++NB4w`?q`@5Zm%qtgX8($p z3cg?kxC_beagSl2sEzD}02;mBh(}-D*nJJXbc4na+$CkTqBch?lWp< z;*gPpir|jK`n#vUQP63^;6R2P5M+*%=fw;MhSc`ROWs4+^rYGHrIU)Y z+Q(@~ktj9^aosWuWh*F?D6G7=DlKo^=jP7|#?VR^C+R+gC)nmM zo^t4bONh%?;E%c%yVIg7HU>#ByT6|4vgXLOk%&JXWChq#;{Tox7r~gtbE&!u?-%Om z*hlq@#`?PH*Wo2#K3shxaSY6ckJi`MAI;rfDT)W>T^vR$k@I<8t$|C}5VX77aMWZR zh~a(YF6ewqeT$+M5>qFiw6(1EMk!+1Q>l9kT@!K~U!{?aL?)3X7wuA(U1Z(YE=#e5 zB;$WoN0;vV5YtR~glbMA@0~mObgdqGNG_sOQtwoeS67vp6@r#mcjJL+0(^M+Nm@i< zXmic6@igZC#84&EO~aGmB|kQNFN^c_*>PCYmJG%$)IxAv4l?YD(%E~T(3*|eCrOCO zX*~h8v3^HtkK>CTCt$ybcxK*Yhk`WrL_Vpj*Atw+m@n28#SAgCT}u8(2OoClH5uAh=Ou#9>C z;7Zs`PK8h8`)J>h($90>lARW{t{OPHD4dLqQAlu*GZa|jwnOmeqWpaPNV!9;dv? z1$Iw=Wem2}WTX9X>C=Xq$qXmodz=V~f7iHrPqPpyb{rH&Lv*sTxpYw)@(HEdFG zOxykAm*zNgOU~ozISHrEzp{)GdX-*P#@Yzq@(%C6`Fx^91vSeVgIkyp%s(WvOW)Vq zv`5B@I;u=rbqWwcU8edS0GK~n_0fC&!>t@KxzN@>xstwHovLXrbu$3xI8F{%y7*Xe@wft?vATrZ3u+?B};_hnTQf#7il;pLVWXR`v}5MU5Il$q&r~B&#GF z70}B?VvZuX=g(#TBxt8yY5I6r7W={%REk@iA+&qPs%B7AI415KnruKFrdYE-61oP9^~@$8 zU{99`yH498dFlN0q9=|{kj9CVkHg4{Gs4JI?+76kkjZb^nA)59>18*))U}~8k^y%A zbset1p6c^*<`2_dXJOKPCQ5djFqb6Uw>~hcmGO{Q!yVO2pWBAK$40ytG~zR6bl)=r z6(DnTt=0)W3pdUhI}lNjXR^i1k1@*2w;mv@tdPIY>vwL?Eg}^(P5R*?ty40Xi+ibx zn2R^GJ&}D%rU?atX8#gGIeE?ZVp@YZ(~jY5COdT*-gef#2l$JtD?`(+_>}&5Xy5o| zC~V|1IYhGIV^|Y6wp8*rwWDM)Ph*w0d2z~7+!ggcZ17NiWT2x=Qrj8yK5TY;+36)H ziHE^Rbf<-|_po`Sq{v3%EGcYivH=J9#geyEk)ks^im?Mfj+gwQ)*`Gp7~<}1)?DV3 z$EuH-uX6Sz6&xx|C=|M+l0iQpDHew0-o7n-L;o`WFydpS4~Qv0S~-CXVAh4np=R>x zwz~2hIe98&6!jwBhqg`VGYcYfSC@S9Jt1sdf2jhHwKYj!vXY)}$fjOD*mvdw zUkg}8mABwrTqL#R*Jq8~+V@Dk-=)@l02H-E)wn}4=PNndq6|VoPKHY+>9VP{7*mzU zqI_*Z9BI7xn*BS&FZ8T(@s@wST@U(QGS_W& zND99ZN9HcyZqGXDcy+}tNjpDFSNq2$5o8%B-ODi2aArdqFL=}SRJ^!>^Sr$~*V6AY znWA>*SmcKXO2px;lr~gMM|h*$GZwWttHQ@+!J+NErFiA}A##DjQ#(Z?_u6CQYWc#| z<70cCKkrp<+A6H>sY2CWE1T@bc;?m5b@xYC2wf;*^mCVEVX}rOIvrCsRuiQ7=sb76 zkcmn{ZT=yl)98Jj6v|M8sdCY5Vh-PDKHhc?vf7gLyJChcYfqdSN5p5iUMx0Kqe@6D z6IPX*8jgD=l@yAcx6rMqjHMETn>x<7dpT0XjO+hhjwHNumD>lJ z=CYMPXJT*AzmewRf}b(5w@;gWDIa{9>7Wo3%^ZZL?A(xj16hMCKX!^I{b+TqyT^Xy z@vEF|is)b^2g0fTXyunI#h}Y}=w$Yo)n)F8H>bVv1D#7oYI%WrYcU;^oK!CZflm{C z%Ezt6RhrkFAazw?;`5~PGLsKp z+-DB_3a1V^nw3Yo%cyaV-txYo;r6Vm<7e=__Quh)Ub`J88KofC&IO} zs|PoZj}e1LF_r6JCW2*A+hP@xgp{6&S}PCmMU3tCyTj%AAWNtw(_6RV=%jj8BSH*VRhqmfB~s$Lu3J`S84>6WQ+FUlQnr z)oLr1mwz$+V!OiC=OQy}grZ4ntz@B#jE6_v*!K(sdXe}_6thYqDbWw)xc5ObuDlX< zmD9U0d~LBO5e%*!9Y$gke0Qwt{4?0#MW()6(+>}3OulXEl7l6NiN!Yon2Fk3-5C6Ap2dF0hxo7R%MKjp08pfVo=?)&y?C8J$zh?gvLfF-J zN&bH%K>qK!EM$QW$WQ9lZ$3lf>GjYTFaF9TwSnvh&_cTUjGLx32H+6T9_YCo2OR?e zBv4%kQV~GYB?ZWAfGFs$A`B1;0D4Ee!X==^uABz=;GpC-JT&A_+oNrv4C8{2^`SIe z9i@`uz7?ySuzn0nUtxC9-bl#y{rIB-hmnh(^&r0Aeu{wTXADQi5?fP>A}r4EG`#FV z2CSxY5L;X5QZhwRJviHm1xhkRS4j!I@zqM2Srx4eI}P6%%zDetY`|tut?hwkjkOyfGs_Bv}_# z-c0<&CJ*Y+fqV&#?AQ=>GNX5JiL+d&aQTmWfgKviBQONf{9oEg8?(+O^J@2el`V3AgBk>e?!4$1QpC)YWmYZKG}P^;vWjHM{ymb^PLWHrjM zC$vtF0Pz06q(Y_9?o6cNKA zS9yM51}5F0qyPGCq1}hbOI?UTTt%+uZqNS?2~@$^LO_>s3jL(y#X%(%wA{D-17^eh zH^zv1g;oPYQLl5I%DoUlYT)=g$Kb9bRZvMBvcbW_`v+?yv=N&^p5I@e##;q@WRF4g z99yqt)@j%kA@XWK#gl)r&*Aca`ZP7}c;+~a3Cwu0NvlNxa0-SWAZ(S977@wzxrPID zmb^^J?(B}G0H6lr+FlLpN3*9-r;RA2NitsYT+u5U zfcF1udZ$OLO3jd|Y#wqHHY^7OU@_61r6porG_BCnvaE0zdSmQWt;Dd=?bRN+R(l*QKV zm@io(1rYRMT`4`d23XS92UmBm@9Z4Q8c5KES>th0Vk zKudh3^DhU?8T~z`ERFf30b30fb&+y+4AOzHt7pPo?$RW~a(L@B`m3BEQZmo02XRJ& z5yb?{(gxLc3FJ%8o?uY4bkXJjCJF9Jr1udBFs!S#2qG~xg}$DL@|Jp2D5?D_vuZ#= z-AeJF!evnxrTO8lcM%d_?WXaLiQ&5kp|9!PZRpZEc~=UT^(G(>c(kXs95z8ZVDR`T z`YlnbtV{h4JGoLV+LJ-Ci=&!jAOHhtuchYbzsMwaxU(PL*;l;T|72zEQ=Bc3t|8ev z-Qzyq3)PTJYN4LY`164&hnQY5X~%Hy`kAm=bE-!;a1+FQ_6&$^CTF4_`Wz{@K341q zf#9yVN`Qhc4S0`%`a9k>i(`~)F3JXw?{Q0$7+Lh`hV5QSTXykQ%SPCCA@cGp46nwQ zUQ>bBY0V`5M&$*AvJTrN^TpJIPJU7v8O!*rRa+*m@pUeLW{y1qF_boGQ@9!z3_4TR zI31QN?H$=(4Ia0=KQ<6GIz6ic3?2ztL06%qI3#;=y0(?~({UmmevRS^dw(y|ArI$m zx!DyJq*o*_#Q&Jz+j8J%4i?uK-x2R=i*PUiQHKJWHZ)u=STCVvIi_#24~6`}lkyg9 z%d07Sz?cNt(hUcHPn(&>QLXS3l&7LfLCPAbRclqSB7$57$G4&nm30JDs}31OQ2CaY zlxebSiyz+rVP;@>1?1|WK$(u*KaLLh%OL>sivhUHU*kQ~-^jB0Pl@Y)EO)*WfTh6E zK}F6Y>vm_rJLo$z5l9`!F7XXMG2epiiq9?2&$!ksQrkAl-FOW(I1VF{_)SY}t+Z`k zE&69X9ST*OM#Q|oamv?gze@qVxq9jL2^4#RhM+IcqE)ltXZM#}#rslS-qE`qM+ zmtRe|t&f$<1N}4xRBlgZ+p6X*{9bjh*9|H)R-BSUS1}f>WDn@pm)tpSLzCW~nHQ&LmH?=t}s^R{W55`?%gEkItocMQqYy zOA)5*p(`f1aj;xPKFAk7n#eSW&$Tl>7F{;<9e+oAKp4tgr{=`{swHiZ{70bT{=GaT zFPjN*_Ho;MC$=5XrubPLY^D8H$3H(A%0F}ZcDhGvVSOf-Bg-V*LV^W1lSt1T`x=U( zP9-{8S+e0aDM1@2KAUJ-Sjh_wAgUK>{qJhvv9AF_1$O?pTs)*JB722mD#K zDrIS_uNPrnedUkPkoG9pI2waEyY(*$w@9d*rvkT05FCjPK0H7E@Z zOMkIkpZHO;^S+HbslTj|*x6*2Pt|ma{Eg$1B2A!m(Z#guh=mAbAo_CdC@M%QQaO01 zX$k+MwSVB7Hj6p}t3!qv$RcnHBD$`2Y4yy;c#Ik4?hJ+f4$F`*-H8~cU8%)|o3p&^ z60{({&n=%gz+wy&!ZzWAZKjt&d^gll2&{pv)n%?($DaKeFCVE_=Pg;EKbnA+G@ZjE zd2RFiExT;aiH}vp-Dz-aE>nC-yGJx0yW={ir8c#w#hn_R#h~J0XYBq>KnrF+UYqFC zoS(`uo&HeYTZtek4b;tIu*v%nlt}A+QETz(%JO3RYG#y;j>0_of;&%36q4j&FI68A zDk)*J1yUhLBQ4wSP)Skq+uxvV|+cmuIkC`D*|{4+&T4}04sH@pAOTpJ4E~ew9q_sJ*)F`Lq^D< z-`5#SIW{Zu?|(Jl94dA`_vB{&J%#+7v3IzA-TducJoB0rJ2@NIhIQdi(=CPNsqsTl zd_XgE!$?lU3a{IUO>W8lae;;|U+_v)e zEAhtuQ(hue&Bs>eFD1};BxIN;{3@ZI<9bFPnx#pD;MbS`xP*5XEq zd4r(wCx8BHW4}ten&TT4JgCz|ADEz$ak8WGJDSWb4POdkUvZl7e9n)c1L(`*REjy6 z!KF`iY4SVpu-BA6oZb7eylZ8Nqplx>yD30Gyx=0JzZr9D{E}#SJ*}k zcekN%@>_qM(F%IN@CmrCbHPGQHhnJPR>$JzJk#a~Da2oH_q(*6$`7DYxD1<1QyD9x zcdi+}QGieg)7goj4B_1g$bIEHxJ2~1RtoYIHtycwL6VT^l!M+8s2$FD`vWYe#+jDv>?aqdAi;C>4d!m zkB1cP?t*KsJwJmbb~bpp&E$pZc9SR11dc84M-dqbwYeBP{BUvQl1-Sw z%+x`t^dI-1zlm&EwDB`lO58S9M9vPNz2q0&I+rMnh`u$vIi_q@!eU%}h^w~`N^&Rm zM>09RJhKx&3e!EwFr)cV?YWnaR_mbaeQW*p10^9UVYI$NDs&0Ksnxj}5LoVGKTz)% z#}rchXW)xB~y~!s^!Z#g+B~ zK4K5!uZIu1J@%aSy!^lSfcpaKnu@CuUqaB3@XYL8->;DpY5zYOoQ9%~ZW9I9z)1?- z#>lL{@|(PFV^C+czoNH)*JwcImc6L>95M#x2GU1gsW$dr-rbo^Z2bE7T5cWsZ`$xX zJo?YUZAPhRr&jgkZN??p%A<@0t@6pqaeeZ*;Fook@`g7in`)1ZI^q!C2zCie^q=L> z$|elo%a_TRd3)C$Z!tL8myiFzVB^$B&-+u#H5HRkiIMHFK2o1J$!h}DhdW%}tSz0Y zgANUaqI^2&SdY-MU+qWW1wcYYozd%qtFH1>tDJ|5IcgNag|M>UI&z9zA% z#n(PRp4Z$CZp;3#RVLItc4eAA^loG^oBXEp=-ki+7hO~@BT)QaXh4TkYAPy#lzqf+ zdnBVe;=>S(@~=a0wHQB*(B0LXW=CO)Q2d&-<{g0eyVqb8oiPwmGgaq#<iC!sBvG(Im?MmIe&x{Z4@A2K|s+9fWqZ4aoC>y(3jB?zw3)5Fd_ z1p1UGFKswY$#)jFwP3A&q!Ze}w#)saUJdmo6pgG#w5+aIvo;Sj>r_G3ZsDQM_r1TZ z#%%@Dc-H&07*J=<1&_hTn$Z}Gh2H_lSc`=@T;#pnrrXh10z%T}+ZZQec6P>B1tnP; zN3f+$c0&@B_ysQ!XY$8L@|KGI!y$&q`(T=D@5ji?F81d>ID4U7W5a?nC$`><-t7n; m5jr6CzS{5yfv~Z&cm4QQ?*t+9DEPaHJ?17>##qCfG5-fa6je3= literal 0 HcmV?d00001 diff --git a/README.asset/ADC4.PNG b/README.asset/ADC4.PNG new file mode 100644 index 0000000000000000000000000000000000000000..bee6ae8652912afb365612b5f31246cafb5f9447 GIT binary patch literal 24610 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 literal 0 HcmV?d00001 diff --git a/README.md b/README.md index a3e1bea..17f0104 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,110 @@ # AutoDiskCopier - + +开源一个**自动磁盘拷贝器(U盘小偷)**。使用该软件请遵守相关法律法规,未经他人许可访问及拷贝他人文件是违法行为。 + +这个应用是我高二刚接触Windows程序设计时开始写的,后来被我改版重写了一番,又成为了我大学时的大作业项目还获得了优秀大项目(然鹅我并不是计算机/软件专业的)…囧rz + +(PS:每隔几年回过头来看看自己曾经写的代码,大概都觉得很挫吧) + +AutoDiskCopier的更多扯淡内容请访问: + +AutoDiskCopier开源代码地址: + +--- + +## 使用手册 + +### 引言 + +非常感谢您抽空阅读Win32应用程序“自动磁盘拷贝器”的用户手册。本手册将向您详细展示该软件所能实现的功能及其操作方法,并为软件的维护与反馈提供了必要的信息。 + +### 软件概述 + +#### 软件功能 + +该软件的主要功能为,在运行该软件时,该软件会监测USB端口,当检测到有移动磁盘接入时,对接入的设备内的文件进行静默拷贝。该软件可用于对移动磁盘的文件备份或文件截取。 +该软件提供了一些可供用户配置的附属功能,合理配置可对程序进行一些个性化的扩展。 +用户可配置的功能有: + +- 决定是否在程序后台运行时显示系统托盘图标(系统托盘图标,即Windows操作系统桌面底端的任务栏右方的小图标,如下图); + + ![](README.asset/ADC0.PNG) + +- 决定该软件是否开机自启动; + +- 决定是否弹出确认复制移动磁盘的对话框,若勾选该选项框,则软件在检测到有移动磁盘接入时,会弹出对话框,用户可选择是否对该磁盘进行拷贝; + +- 决定是否启用MD5文件校验(MD5值是一种Hash值,可用于校验两个文件是否相同),该功能可以保证拷贝文件的准确性,若MD5校验失败,文件会重新复制,若连续校验失败次数超过3次,将跳过对该文件的复制。启用该功能会影响拷贝速度,尤其针对大文件。在不启用该功能时,软件对磁盘文件的平均拷贝速度大约为60MB/s。测试结果表明,对于500MB左右大小的文件,MD5校验的时间大约为40s,因此,若开启此功能,在对大文件进行拷贝时则有可能发生阻塞; + +- 自定义拷贝到的文件的存储路径; + +- 检测签名文件。若勾选该选项框,则软件在对接入的移动磁盘进行拷贝前会先对该磁盘的根目录进行检索,若找到指定的签名文件且内容一致,则跳过对该磁盘的拷贝。 + +#### 运行环境 + +本软件要求运行在PC及其兼容机上,处理器为小端序架构(MD5算法以小端序处理)。软件需要运行在Windows NT及高版本上,发行前用于测试的操作系统为Windows 10。 + +用户需要保证存储路径所在的磁盘有足够的空间,否则拷贝任务将失败。 + +#### 应用分析 + +该软件由纯Win32代码编写,相较于MFC、Java或其他方式开发出的程序,该程序的可执行文件体积小,代码执行效率高,内存占用少,不依赖于更多的外部链接库。Release构建产物大小仅为50KB。在执行拷贝任务时,静默拷贝,内存占用的峰值低,CPU资源消耗小,对电脑的普通使用无影响,是一款轻量级的工具。 + +### 使用说明 + +#### 启动程序 + +双击该软件即可启动。 + +![](README.asset/ADC1.PNG) + +若用户为第一次启动该软件或该软件的配置文件失效,该软件将会自动执行初始化操作,并在完成初始化操作后显示“完成初始化”的对话框。以后再运行该软件,将不再弹出该对话框。 + +![](README.asset/ADC2.PNG) + +#### 激活设置窗口 + +软件启动后,不会显示设置窗口。若要显示设置窗口,可同时按下Ctrl + Alt + Shift + U键。或者若在设置界面勾选了显示系统托盘图标的选项,则也可以通过鼠标右键双击系统托盘图标以显示设置窗口。 + +![](README.asset/ADC3.PNG) + +#### 设置 + +如图所示,分1-8点进行详细说明: + +![](README.asset/ADC4.PNG) + +1. 若勾选该选项框,则该软件在后台运行时会显示系统托盘图标,用户可以通过右键双击该图标以显示设置对话框。 + +2. 若勾选该选项框,则该软件会通过读写注册表为该软件自身添加开机启动项,当windows启动时,该软件自启动。勾选该选项后,不能改变该软件的位置及文件名,否则自启动将无效。 + +3. 若勾选该选项框,则软件在检测到有移动磁盘接入时,会弹出一个确认对话框并进行等待,用户可选择是否对该磁盘进行拷贝,若用户选择“是”,则对磁盘进行拷贝(注:用户选择“是”后,若启用检测签名文件且签名文件存在,将跳过拷贝)。 + + ![](README.asset/ADC4-1.PNG) + +4. 若勾选该选项框,则软件在拷贝文件时执行MD5文件校验,保证拷贝文件的准确性。若MD5校验失败,文件会重新复制,若连续校验失败次数超过3次,将跳过对该文件的复制。启用该功能会在一定程度上影响拷贝速度,尤其在大文件上更加明显。测试结果显示,对于100MB以内的文件,MD5校验的时间在5s以内。但对于500MB左右大小的文件,MD5校验的时间大约为40s,因此,若开启此功能,在对大文件进行拷贝时则有可能发生阻塞,影响拷贝速度。 + +5. 填写一个正确的路径或选择一个可以读写的文件夹以保存拷贝到的文件,需要保证该文件夹所在的磁盘有足够的空间,否则拷贝任务会失败。 + + ![](README.asset/ADC4-2.PNG) + +6. 若勾选该选项框,则软件在对接入的移动磁盘进行拷贝前会先对该磁盘的根目录进行检索,若找到指定的签名文件且内容一致,则跳过对该磁盘的拷贝。可通过按下“生成...”按钮生成签名文件,签名文件是一个64bytes的字节流。 + +7. 在对设置进行更改后,请务必按下“保存设置”按钮,只有在弹出保存成功的对话框后,设置才生效。 + + ![](README.asset/ADC4-3.PNG) + +8. 点击该软件的关闭按钮该软件不会退出,该软件会隐藏设置界面并在后台运行。退出的唯一方法是点击“退出”按钮。 + +### 维护与反馈 + +开源协议:**BSD 2-Clause License** + +反馈请直接提交`github issue`。 + +### 声明 + +本软件为免费开源软件,仅用于技术交流与讨论,任何人或组织不可直接将其作为商业用途,使用本软件造成的一切后果,开发者概不负责。 + +请遵守当地法律法规,正当使用该软件,切勿将该软件用于非法用途,否则带来的一切后果,将由用户自行承担! + From 30a23d16fd8e60f2c79216b389cc329210fcbcbe Mon Sep 17 00:00:00 2001 From: KondeU <370242479@qq.com> Date: Thu, 19 Aug 2021 23:45:26 +0800 Subject: [PATCH 12/13] =?UTF-8?q?=E4=BF=AE=E5=A4=8DAutorun=E9=97=AE?= =?UTF-8?q?=E9=A2=98=EF=BC=8C=E4=B9=8B=E5=89=8D=E7=9A=84Autorun=E7=9A=84?= =?UTF-8?q?=E9=80=BB=E8=BE=91=E6=B2=A1=E6=9C=89=E5=AE=8C=E5=85=A8=E4=BF=AE?= =?UTF-8?q?=E5=A4=8D=E6=AD=A3=E5=B8=B8=EF=BC=8C=E9=87=8D=E5=A4=8D=E7=82=B9?= =?UTF-8?q?=E4=BF=9D=E5=AD=98=E8=AE=BE=E7=BD=AE=E4=BC=9A=E6=9C=89=E9=97=AE?= =?UTF-8?q?=E9=A2=98=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Desc: 修复Autorun问题,之前的Autorun的逻辑没有修复处理好,重复点“保存设置”按钮会导致CheckBox的勾反转但实际设置没有改变。 Type: Feature Link: NA --- AutoDiskCopier_v3/src/AutoDiskCopier.h | 40 +++++++++++++++++--------- 1 file changed, 27 insertions(+), 13 deletions(-) diff --git a/AutoDiskCopier_v3/src/AutoDiskCopier.h b/AutoDiskCopier_v3/src/AutoDiskCopier.h index 844ebf0..b5fd8c6 100644 --- a/AutoDiskCopier_v3/src/AutoDiskCopier.h +++ b/AutoDiskCopier_v3/src/AutoDiskCopier.h @@ -43,6 +43,7 @@ class CAutoDiskCopier bool m_bMD5Check; bool m_bPopupConfirmDialog; bool m_bAutorun; + bool m_bLastAutorun; TCHAR m_szCopyFileSavePath[MAX_PATH]; @@ -81,6 +82,7 @@ class CAutoDiskCopier m_bEnableNotifyIcon = true; m_bAutorun = false; + m_bLastAutorun = m_bAutorun; m_bPopupConfirmDialog = true; m_bMD5Check = false; @@ -114,6 +116,7 @@ class CAutoDiskCopier ReadFile(hFile, m_szCopyFileSavePath, MAX_PATH * sizeof(TCHAR), &dwReaded, NULL); ReadFile(hFile, m_szKey, MAX_PATH * sizeof(TCHAR), &dwReaded, NULL); CloseHandle(hFile); + m_bLastAutorun = m_bAutorun; } } @@ -187,25 +190,36 @@ class CAutoDiskCopier TCHAR szFilePath[MAX_PATH]; GetModuleFileName(NULL, szFilePath, MAX_PATH); - HKEY hReg; - RegOpenKey(HKEY_LOCAL_MACHINE, TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\Run"), &hReg); - if (m_bAutorun) + if (m_bAutorun != m_bLastAutorun) { - if (ERROR_SUCCESS != RegSetValue(hReg, TEXT("AutoDiskCopier"), REG_SZ, szFilePath, (lstrlen(szFilePath) + 1) * sizeof(TCHAR))) + HKEY hReg; + RegOpenKey(HKEY_LOCAL_MACHINE, TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\Run"), &hReg); + if (m_bAutorun) { - MessageBox(hwnd, TEXT("自启动设置失败,请检查是否有注册表写权限(管理员权限)!"), TEXT("ADC - 保存设置"), MB_ICONWARNING); - m_bAutorun = false; + if (ERROR_SUCCESS == RegSetValue(hReg, TEXT("AutoDiskCopier"), REG_SZ, szFilePath, (lstrlen(szFilePath) + 1) * sizeof(TCHAR))) + { + m_bLastAutorun = m_bAutorun; + } + else + { + MessageBox(hwnd, TEXT("自启动设置失败,请检查是否有注册表写权限(管理员权限)!"), TEXT("ADC - 保存设置"), MB_ICONWARNING); + m_bAutorun = m_bLastAutorun; + } } - } - else - { - if (ERROR_SUCCESS != RegDeleteKey(hReg, TEXT("AutoDiskCopier"))) + else { - MessageBox(hwnd, TEXT("自启动设置失败,请检查是否有注册表写权限(管理员权限)!"), TEXT("ADC - 保存设置"), MB_ICONWARNING); - m_bAutorun = true; + if (ERROR_SUCCESS == RegDeleteKey(hReg, TEXT("AutoDiskCopier"))) + { + m_bLastAutorun = m_bAutorun; + } + else + { + MessageBox(hwnd, TEXT("自启动设置失败,请检查是否有注册表写权限(管理员权限)!"), TEXT("ADC - 保存设置"), MB_ICONWARNING); + m_bAutorun = m_bLastAutorun; + } } + RegCloseKey(hReg); } - RegCloseKey(hReg); } From da5cd4eb429f874da6e5a7c0ff6ec83d893f18f0 Mon Sep 17 00:00:00 2001 From: KondeU <370242479@qq.com> Date: Fri, 20 Aug 2021 22:26:06 +0800 Subject: [PATCH 13/13] =?UTF-8?q?=E6=B3=A8=E5=86=8C=E7=9A=84Autorun?= =?UTF-8?q?=E9=94=AE=E5=80=BC=E5=9C=A8Win10=E4=B8=8A=E6=97=A0=E5=8F=8D?= =?UTF-8?q?=E5=BA=94=EF=BC=8C=E6=98=AF=E5=AD=90=E9=94=AE=E5=92=8C=E9=A1=B9?= =?UTF-8?q?=E7=9A=84=E9=97=AE=E9=A2=98=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Desc: RegSetValue只能修改注册表键的默认项,对于非默认项无法修改,这种方式注册到Run的子键中在Win10下自启动不可用,需要直接在Run下新建一个非默认项值,使用RegSetValueEx设置的是子项而不是子键,此处应修改为RegSetValueEx。配套的应使用RegDeleteValue删除项。 Type: Feature Link: NA --- AutoDiskCopier_v3/src/AutoDiskCopier.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/AutoDiskCopier_v3/src/AutoDiskCopier.h b/AutoDiskCopier_v3/src/AutoDiskCopier.h index b5fd8c6..78ade6c 100644 --- a/AutoDiskCopier_v3/src/AutoDiskCopier.h +++ b/AutoDiskCopier_v3/src/AutoDiskCopier.h @@ -196,7 +196,7 @@ class CAutoDiskCopier RegOpenKey(HKEY_LOCAL_MACHINE, TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\Run"), &hReg); if (m_bAutorun) { - if (ERROR_SUCCESS == RegSetValue(hReg, TEXT("AutoDiskCopier"), REG_SZ, szFilePath, (lstrlen(szFilePath) + 1) * sizeof(TCHAR))) + if (ERROR_SUCCESS == RegSetValueEx(hReg, TEXT("AutoDiskCopier"), 0, REG_SZ, (BYTE*)szFilePath, (lstrlen(szFilePath) + 1) * sizeof(TCHAR))) { m_bLastAutorun = m_bAutorun; } @@ -208,7 +208,7 @@ class CAutoDiskCopier } else { - if (ERROR_SUCCESS == RegDeleteKey(hReg, TEXT("AutoDiskCopier"))) + if (ERROR_SUCCESS == RegDeleteValue(hReg, TEXT("AutoDiskCopier"))) { m_bLastAutorun = m_bAutorun; }