├── .gitignore ├── CHANGELOG.md ├── CHANGELOG.zh-CN.md ├── LICENSE ├── PRIVACY.md ├── README.md ├── assets ├── Download_on_the_Mac_App_Store_Badge_US-UK_165x40.png ├── GitHub_Logo_White.png ├── Microsoft_English_L.png ├── fhash_icon256.png ├── mac_about.jpg ├── mac_bigsur_about.png ├── mac_bigsur_about_dark.png ├── mac_bigsur_about_joint.png ├── mac_bigsur_context_menu.png ├── mac_bigsur_progress.png ├── mac_bigsur_progress_dark.png ├── mac_bigsur_progress_joint.png ├── mac_bigsur_result.png ├── mac_bigsur_result_dark.png ├── mac_bigsur_result_joint.png ├── mac_bigsur_start.png ├── mac_bigsur_start_dark.png ├── mac_bigsur_start_joint.png ├── mac_calc_multi_finish.jpg ├── mac_calc_one_start.jpg ├── mac_context_menu_item.jpg ├── mac_new_progress_dark.png ├── mac_new_progress_joint.png ├── mac_new_progress_light.png ├── mac_ui.jpg ├── sflogo.png ├── win_uwp_about_dark_cut.jpg ├── win_uwp_about_light_cut.jpg ├── win_uwp_calc_context_dark_cut.jpg ├── win_uwp_calc_context_light_cut.jpg ├── win_uwp_calc_done_dark_cut.jpg ├── win_uwp_calc_done_light_cut.jpg ├── win_uwp_calc_proc_dark_cut.jpg ├── win_uwp_calc_proc_light_cut.jpg ├── win_uwp_calc_proc_light_cut_fusion.jpg ├── win_uwp_context_menu_dark_cut.png ├── win_uwp_context_menu_light_cut.png ├── win_uwp_start_dark_cut.jpg └── win_uwp_start_light_cut.jpg ├── sub-proj ├── fHashClrBridge │ ├── .gitignore │ ├── AdvTaskbarHelper.cpp │ ├── AdvTaskbarHelper.h │ ├── AssemblyInfo.cpp │ ├── ClrHelper.cpp │ ├── ClrHelper.h │ ├── HashMgmtClr.cpp │ ├── HashMgmtClr.h │ ├── NativeHelper.cpp │ ├── NativeHelper.h │ ├── ResultDataNet.h │ ├── UIBridgeDelegates.cpp │ ├── UIBridgeDelegates.h │ ├── UIBridgeWUI.cpp │ ├── UIBridgeWUI.h │ ├── fHashClrBridge.rc │ ├── fHashClrBridge.vcxproj │ ├── fHashClrBridge.vcxproj.filters │ ├── resource.h │ ├── stdafx.cpp │ └── stdafx.h ├── fHashShlExt │ ├── .gitignore │ ├── ReadMe.txt │ ├── dlldata.c │ ├── dllmain.cpp │ ├── dllmain.h │ ├── fHashShellExt.cpp │ ├── fHashShellExt.h │ ├── fHashShellExt.rgs │ ├── fHashShlExt.cpp │ ├── fHashShlExt.def │ ├── fHashShlExt.idl │ ├── fHashShlExt.rc │ ├── fHashShlExt.rgs │ ├── fHashShlExt.vcxproj │ ├── fHashShlExt.vcxproj.filters │ ├── fHashShlExtStringsBase.cpp │ ├── fHashShlExtStringsBase.h │ ├── fHashShlExtStringsZHCN.cpp │ ├── fHashShlExtStringsZHCN.h │ ├── fHashShlExtps.def │ ├── regext.bat │ ├── regext.reg │ ├── resource.h │ ├── stdafx.cpp │ ├── stdafx.h │ └── targetver.h ├── fHashUwpNative │ ├── .gitignore │ ├── fHashUwpNative.vcxproj │ ├── fHashUwpNative.vcxproj.filters │ ├── framework.h │ ├── stdafx.cpp │ └── stdafx.h ├── fHashUwpShellExt │ ├── .gitignore │ ├── Dll.def │ ├── Dll.h │ ├── ExplorerCommandVerb.cpp │ ├── RegisterExtension.cpp │ ├── RegisterExtension.h │ ├── ShellHelpers.h │ ├── UwpShellExtStringsBase.cpp │ ├── UwpShellExtStringsBase.h │ ├── UwpShellExtStringsZHCN.cpp │ ├── UwpShellExtStringsZHCN.h │ ├── dll.cpp │ ├── fHashUwpShellExt.rc │ ├── fHashUwpShellExt.vcxproj │ ├── fHashUwpShellExt.vcxproj.filters │ ├── fHashUwpShellExt.vcxproj.user │ ├── pch.h │ ├── resource.h │ └── stdafx.h ├── fHashWUINative │ ├── .gitignore │ ├── fHashWUINative.vcxproj │ ├── fHashWUINative.vcxproj.filters │ ├── framework.h │ ├── stdafx.cpp │ └── stdafx.h ├── fHashWUIShellExt │ ├── .gitignore │ ├── AppxShellExtStringsBase.cpp │ ├── AppxShellExtStringsBase.h │ ├── AppxShellExtStringsZHCN.cpp │ ├── AppxShellExtStringsZHCN.h │ ├── Dll.def │ ├── Dll.h │ ├── ExplorerCommandVerb.cpp │ ├── RegisterExtension.cpp │ ├── RegisterExtension.h │ ├── ShellHelpers.h │ ├── dll.cpp │ ├── fHashWUIShellExt.rc │ ├── fHashWUIShellExt.vcxproj │ ├── fHashWUIShellExt.vcxproj.filters │ ├── pch.h │ ├── resource.h │ └── stdafx.h └── fHashWinRtBridge │ ├── .gitignore │ ├── CxHelper.cpp │ ├── CxHelper.h │ ├── HashMgmt.cpp │ ├── HashMgmt.h │ ├── NativeHelper.cpp │ ├── NativeHelper.h │ ├── ResultDataNet.h │ ├── UIBridgeDelegate.cpp │ ├── UIBridgeDelegate.h │ ├── UIBridgeUwp.cpp │ ├── UIBridgeUwp.h │ ├── fHashWinRtBridge.rc │ ├── fHashWinRtBridge.vcxproj │ ├── fHashWinRtBridge.vcxproj.filters │ ├── resource.h │ ├── stdafx.cpp │ └── stdafx.h └── trunk ├── .gitignore ├── fHash.xcworkspace ├── contents.xcworkspacedata └── xcshareddata │ └── IDEWorkspaceChecks.plist ├── fHashMacUI.xcodeproj ├── project.pbxproj └── project.xcworkspace │ └── contents.xcworkspacedata ├── fHashUwpWap ├── .gitignore ├── Images │ ├── LargeTile.scale-100.png │ ├── LargeTile.scale-125.png │ ├── LargeTile.scale-150.png │ ├── LargeTile.scale-200.png │ ├── LargeTile.scale-400.png │ ├── LockScreenLogo.scale-200.png │ ├── SmallTile.scale-100.png │ ├── SmallTile.scale-125.png │ ├── SmallTile.scale-150.png │ ├── SmallTile.scale-200.png │ ├── SmallTile.scale-400.png │ ├── SplashScreen.scale-100.png │ ├── SplashScreen.scale-125.png │ ├── SplashScreen.scale-150.png │ ├── SplashScreen.scale-200.png │ ├── SplashScreen.scale-400.png │ ├── Square150x150Logo.scale-100.png │ ├── Square150x150Logo.scale-125.png │ ├── Square150x150Logo.scale-150.png │ ├── Square150x150Logo.scale-200.png │ ├── Square150x150Logo.scale-400.png │ ├── Square44x44Logo.altform-lightunplated_targetsize-16.png │ ├── Square44x44Logo.altform-lightunplated_targetsize-24.png │ ├── Square44x44Logo.altform-lightunplated_targetsize-256.png │ ├── Square44x44Logo.altform-lightunplated_targetsize-32.png │ ├── Square44x44Logo.altform-lightunplated_targetsize-48.png │ ├── Square44x44Logo.altform-unplated_targetsize-16.png │ ├── Square44x44Logo.altform-unplated_targetsize-256.png │ ├── Square44x44Logo.altform-unplated_targetsize-32.png │ ├── Square44x44Logo.altform-unplated_targetsize-48.png │ ├── Square44x44Logo.scale-100.png │ ├── Square44x44Logo.scale-125.png │ ├── Square44x44Logo.scale-150.png │ ├── Square44x44Logo.scale-200.png │ ├── Square44x44Logo.scale-400.png │ ├── Square44x44Logo.targetsize-16.png │ ├── Square44x44Logo.targetsize-24.png │ ├── Square44x44Logo.targetsize-24_altform-unplated.png │ ├── Square44x44Logo.targetsize-256.png │ ├── Square44x44Logo.targetsize-32.png │ ├── Square44x44Logo.targetsize-48.png │ ├── StoreLogo.backup.png │ ├── StoreLogo.scale-100.png │ ├── StoreLogo.scale-125.png │ ├── StoreLogo.scale-150.png │ ├── StoreLogo.scale-200.png │ ├── StoreLogo.scale-400.png │ ├── Wide310x150Logo.scale-100.png │ ├── Wide310x150Logo.scale-125.png │ ├── Wide310x150Logo.scale-150.png │ ├── Wide310x150Logo.scale-200.png │ └── Wide310x150Logo.scale-400.png ├── Package-DEBUG.appxmanifest ├── Package.appxmanifest ├── fHashUwpWap.wapproj └── version.h ├── fHashWUIWap ├── .gitignore ├── Images │ ├── LargeTile.scale-100.png │ ├── LargeTile.scale-125.png │ ├── LargeTile.scale-150.png │ ├── LargeTile.scale-200.png │ ├── LargeTile.scale-400.png │ ├── LockScreenLogo.scale-200.png │ ├── SmallTile.scale-100.png │ ├── SmallTile.scale-125.png │ ├── SmallTile.scale-150.png │ ├── SmallTile.scale-200.png │ ├── SmallTile.scale-400.png │ ├── SplashScreen.scale-100.png │ ├── SplashScreen.scale-125.png │ ├── SplashScreen.scale-150.png │ ├── SplashScreen.scale-200.png │ ├── SplashScreen.scale-400.png │ ├── Square150x150Logo.scale-100.png │ ├── Square150x150Logo.scale-125.png │ ├── Square150x150Logo.scale-150.png │ ├── Square150x150Logo.scale-200.png │ ├── Square150x150Logo.scale-400.png │ ├── Square44x44Logo.altform-lightunplated_targetsize-16.png │ ├── Square44x44Logo.altform-lightunplated_targetsize-24.png │ ├── Square44x44Logo.altform-lightunplated_targetsize-256.png │ ├── Square44x44Logo.altform-lightunplated_targetsize-32.png │ ├── Square44x44Logo.altform-lightunplated_targetsize-48.png │ ├── Square44x44Logo.altform-unplated_targetsize-16.png │ ├── Square44x44Logo.altform-unplated_targetsize-256.png │ ├── Square44x44Logo.altform-unplated_targetsize-32.png │ ├── Square44x44Logo.altform-unplated_targetsize-48.png │ ├── Square44x44Logo.scale-100.png │ ├── Square44x44Logo.scale-125.png │ ├── Square44x44Logo.scale-150.png │ ├── Square44x44Logo.scale-200.png │ ├── Square44x44Logo.scale-400.png │ ├── Square44x44Logo.targetsize-16.png │ ├── Square44x44Logo.targetsize-24.png │ ├── Square44x44Logo.targetsize-24_altform-unplated.png │ ├── Square44x44Logo.targetsize-256.png │ ├── Square44x44Logo.targetsize-32.png │ ├── Square44x44Logo.targetsize-48.png │ ├── StoreLogo.backup.png │ ├── StoreLogo.png │ ├── StoreLogo.scale-100.png │ ├── StoreLogo.scale-125.png │ ├── StoreLogo.scale-150.png │ ├── StoreLogo.scale-200.png │ ├── StoreLogo.scale-400.png │ ├── Wide310x150Logo.scale-100.png │ ├── Wide310x150Logo.scale-125.png │ ├── Wide310x150Logo.scale-150.png │ ├── Wide310x150Logo.scale-200.png │ └── Wide310x150Logo.scale-400.png ├── Package-DEV.appxmanifest ├── Package.appxmanifest ├── ShellExt │ └── .gitignore ├── ShellExtDev │ └── .gitignore ├── fHashWUIWap.wapproj └── version.h ├── fhashwui17.sln ├── fileshash.vcxproj ├── fileshash.vcxproj.filters ├── fileshash15.sln ├── fileshashuwp17.sln ├── package_macos_dmg.sh ├── package_win_mfc64.py └── source ├── Algorithms ├── MD5.cpp ├── MD5.h ├── SHA1.cpp ├── SHA1.h ├── endianness.h ├── sha256.cpp ├── sha256.h ├── sha512.cpp └── sha512.h ├── Common ├── Global.h ├── HashEngine.cpp ├── HashEngine.h ├── ThreadPool.h ├── UIBridgeBase.h ├── Utils.cpp ├── Utils.h ├── strhelper.cpp └── strhelper.h ├── OSXUI ├── AboutViewController.swift ├── AboutWindowController.swift ├── Assets.xcassets │ ├── AppIcon.appiconset │ │ ├── Contents.json │ │ ├── fh-bigsur-1024.png │ │ ├── fh-bigsur-128.png │ │ ├── fh-bigsur-256.png │ │ ├── fh-bigsur-257.png │ │ ├── fh-bigsur-512.png │ │ ├── fh-bigsur-513.png │ │ ├── fh-bigsur-64.png │ │ ├── fh-bigsur-65.png │ │ ├── fh-bigsur-66.png │ │ └── fh-bigsur-67.png │ └── Contents.json ├── Base.lproj │ ├── Localizable.strings │ ├── Main.storyboard │ └── ServicesMenu.strings ├── DockProgress.swift ├── DockProgressUtilities.swift ├── HashBridge.h ├── HashBridge.mm ├── HyperlinkTextField.swift ├── Info.plist ├── MacSwiftUtils.swift ├── MacUtils.h ├── MacUtils.mm ├── MainView.swift ├── MainViewController.swift ├── MainWindowController.swift ├── NoTitlebarWindowController.swift ├── PaddingClipView.swift ├── ResultDataSwift.swift ├── UIBridgeMacSwift.h ├── UIBridgeMacSwift.mm ├── en.lproj │ ├── Localizable.strings │ └── ServicesMenu.strings ├── fHash-Bridging-Header.h ├── fHash-Swift-Header.h ├── fHash.entitlements ├── fHashMacAppDelegate.swift ├── icons │ ├── fh-bigsur-1024.png │ ├── fh-bigsur-1024.psd │ ├── fh-bigsur-128.png │ ├── fh-bigsur-128.psd │ ├── fh-bigsur-256.png │ ├── fh-bigsur-256.psd │ ├── fh-bigsur-512.png │ ├── fh-bigsur-512.psd │ ├── fh-bigsur-64.png │ └── fh-bigsur-64.psd ├── stdafx.h └── zh-Hans.lproj │ ├── Localizable.strings │ └── ServicesMenu.strings ├── OsUtils ├── OsFile.h ├── OsFilePosixDarwin.cpp ├── OsFileWinAfx.cpp ├── OsFileWinApi.cpp ├── OsFileWinUwp.cpp ├── OsThread.h ├── OsThreadPosixDarwin.cpp └── OsThreadWinApi.cpp ├── WinCommon ├── AdvTaskbar.cpp ├── AdvTaskbar.h ├── ClipboardHelper.cpp ├── ClipboardHelper.h ├── FileVersionHelper.cpp ├── FileVersionHelper.h ├── WindowsComm.cpp ├── WindowsComm.h ├── WindowsStrings.cpp ├── WindowsStrings.h ├── WindowsStringsInternal.cpp └── WindowsStringsInternal.h ├── WinMFC ├── AboutDlg.cpp ├── AboutDlg.h ├── FilesHash.cpp ├── FilesHash.h ├── FilesHashDlg.cpp ├── FilesHashDlg.h ├── FindDlg.cpp ├── FindDlg.h ├── HyperEdit.cpp ├── HyperEdit.h ├── HyperEditHash.cpp ├── HyperEditHash.h ├── ShellExtComm.cpp ├── ShellExtComm.h ├── UIBridgeMFC.cpp ├── UIBridgeMFC.h ├── UIStringsBase.cpp ├── UIStringsBase.h ├── UIStringsZHCN.cpp ├── UIStringsZHCN.h ├── WindowsUtils.cpp ├── WindowsUtils.h ├── fileshash.rc ├── res │ ├── compatibility.manifest │ ├── fileshash.rc2 │ ├── fm.ico │ ├── icon.bmp │ ├── icon.psd │ ├── icon1.ico │ └── md5sum.ico ├── resource.h └── version.h ├── WinUI ├── .gitignore ├── AboutPage.xaml ├── AboutPage.xaml.cs ├── App.xaml ├── App.xaml.cs ├── Assets │ ├── AboutLogo.large.png │ ├── StoreLogo.backup.png │ ├── StoreLogo.scale-100.png │ ├── StoreLogo.scale-125.png │ ├── StoreLogo.scale-150.png │ ├── StoreLogo.scale-200.png │ ├── StoreLogo.scale-400.png │ └── fHashWUI.ico ├── MainPage.xaml ├── MainPage.xaml.cs ├── MainWindow.xaml ├── MainWindow.xaml.cs ├── NativeMethods.txt ├── Program.cs ├── Properties │ ├── AssemblyInfo.cs │ └── PublishProfiles │ │ ├── win10-arm64.pubxml │ │ └── win10-x64.pubxml ├── Strings │ ├── en-US │ │ └── Resources.resw │ └── zh-CN │ │ └── Resources.resw ├── Win32Helper.cs ├── WinUIHelper.cs ├── app.manifest └── fHashWUI.csproj ├── WinUWP ├── .gitignore ├── AboutPage.xaml ├── AboutPage.xaml.cs ├── App.xaml ├── App.xaml.cs ├── Assets │ ├── AboutLogo.large.png │ ├── LargeTile.scale-100.png │ ├── LargeTile.scale-125.png │ ├── LargeTile.scale-150.png │ ├── LargeTile.scale-200.png │ ├── LargeTile.scale-400.png │ ├── LockScreenLogo.scale-200.png │ ├── SmallTile.scale-100.png │ ├── SmallTile.scale-125.png │ ├── SmallTile.scale-150.png │ ├── SmallTile.scale-200.png │ ├── SmallTile.scale-400.png │ ├── SplashScreen.scale-100.png │ ├── SplashScreen.scale-125.png │ ├── SplashScreen.scale-150.png │ ├── SplashScreen.scale-200.png │ ├── SplashScreen.scale-400.png │ ├── Square150x150Logo.scale-100.png │ ├── Square150x150Logo.scale-125.png │ ├── Square150x150Logo.scale-150.png │ ├── Square150x150Logo.scale-200.png │ ├── Square150x150Logo.scale-400.png │ ├── Square44x44Logo.altform-lightunplated_targetsize-16.png │ ├── Square44x44Logo.altform-lightunplated_targetsize-24.png │ ├── Square44x44Logo.altform-lightunplated_targetsize-256.png │ ├── Square44x44Logo.altform-lightunplated_targetsize-32.png │ ├── Square44x44Logo.altform-lightunplated_targetsize-48.png │ ├── Square44x44Logo.altform-unplated_targetsize-16.png │ ├── Square44x44Logo.altform-unplated_targetsize-256.png │ ├── Square44x44Logo.altform-unplated_targetsize-32.png │ ├── Square44x44Logo.altform-unplated_targetsize-48.png │ ├── Square44x44Logo.scale-100.png │ ├── Square44x44Logo.scale-125.png │ ├── Square44x44Logo.scale-150.png │ ├── Square44x44Logo.scale-200.png │ ├── Square44x44Logo.scale-400.png │ ├── Square44x44Logo.targetsize-16.png │ ├── Square44x44Logo.targetsize-24.png │ ├── Square44x44Logo.targetsize-24_altform-unplated.png │ ├── Square44x44Logo.targetsize-256.png │ ├── Square44x44Logo.targetsize-32.png │ ├── Square44x44Logo.targetsize-48.png │ ├── StoreLogo.backup.png │ ├── StoreLogo.scale-100.png │ ├── StoreLogo.scale-125.png │ ├── StoreLogo.scale-150.png │ ├── StoreLogo.scale-200.png │ ├── StoreLogo.scale-400.png │ ├── Wide310x150Logo.scale-100.png │ ├── Wide310x150Logo.scale-125.png │ ├── Wide310x150Logo.scale-150.png │ ├── Wide310x150Logo.scale-200.png │ └── Wide310x150Logo.scale-400.png ├── MainPage.xaml ├── MainPage.xaml.cs ├── Package-DEBUG.appxmanifest ├── Package.appxmanifest ├── Properties │ ├── AssemblyInfo.cs │ └── Default.rd.xml ├── Strings │ ├── en-US │ │ └── Resources.resw │ └── zh-CN │ │ └── Resources.resw ├── UwpHelper.cs ├── fHashUwp.csproj └── fh-11-1024.png ├── stdafx.cpp ├── stdafx.h └── targetver.h /.gitignore: -------------------------------------------------------------------------------- 1 | *~ 2 | *.DS_Store 3 | -------------------------------------------------------------------------------- /PRIVACY.md: -------------------------------------------------------------------------------- 1 | #### Privacy Policy 2 | 3 | Your privacy is important to us. It is Sun Junwen's policy to respect your privacy regarding any information we may collect from you across fHash app, website and other apps/sites we own and operate. 4 | 5 | We only ask for personal information when we truly need it to provide a service to you. We collect it by fair and lawful means, with your knowledge and consent. We also let you know why we’re collecting it and how it will be used. 6 | 7 | We only retain collected information for as long as necessary to provide you with your requested service. What data we store, we’ll protect within commercially acceptable means to prevent loss and theft, as well as unauthorised access, disclosure, copying, use or modification. 8 | 9 | We don’t share any personally identifying information publicly or with third-parties, except when required to by law. 10 | 11 | Our website may link to external sites that are not operated by us. Please be aware that we have no control over the content and practices of these sites, and cannot accept responsibility or liability for their respective privacy policies. 12 | 13 | You are free to refuse our request for your personal information, with the understanding that we may be unable to provide you with some of your desired services. 14 | 15 | Your continued use of our website will be regarded as acceptance of our practices around privacy and personal information. If you have any questions about how we handle user data and personal information, feel free to contact us. 16 | 17 | This policy is effective as of 1 October 2018. -------------------------------------------------------------------------------- /assets/Download_on_the_Mac_App_Store_Badge_US-UK_165x40.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/assets/Download_on_the_Mac_App_Store_Badge_US-UK_165x40.png -------------------------------------------------------------------------------- /assets/GitHub_Logo_White.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/assets/GitHub_Logo_White.png -------------------------------------------------------------------------------- /assets/Microsoft_English_L.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/assets/Microsoft_English_L.png -------------------------------------------------------------------------------- /assets/fhash_icon256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/assets/fhash_icon256.png -------------------------------------------------------------------------------- /assets/mac_about.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/assets/mac_about.jpg -------------------------------------------------------------------------------- /assets/mac_bigsur_about.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/assets/mac_bigsur_about.png -------------------------------------------------------------------------------- /assets/mac_bigsur_about_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/assets/mac_bigsur_about_dark.png -------------------------------------------------------------------------------- /assets/mac_bigsur_about_joint.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/assets/mac_bigsur_about_joint.png -------------------------------------------------------------------------------- /assets/mac_bigsur_context_menu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/assets/mac_bigsur_context_menu.png -------------------------------------------------------------------------------- /assets/mac_bigsur_progress.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/assets/mac_bigsur_progress.png -------------------------------------------------------------------------------- /assets/mac_bigsur_progress_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/assets/mac_bigsur_progress_dark.png -------------------------------------------------------------------------------- /assets/mac_bigsur_progress_joint.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/assets/mac_bigsur_progress_joint.png -------------------------------------------------------------------------------- /assets/mac_bigsur_result.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/assets/mac_bigsur_result.png -------------------------------------------------------------------------------- /assets/mac_bigsur_result_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/assets/mac_bigsur_result_dark.png -------------------------------------------------------------------------------- /assets/mac_bigsur_result_joint.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/assets/mac_bigsur_result_joint.png -------------------------------------------------------------------------------- /assets/mac_bigsur_start.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/assets/mac_bigsur_start.png -------------------------------------------------------------------------------- /assets/mac_bigsur_start_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/assets/mac_bigsur_start_dark.png -------------------------------------------------------------------------------- /assets/mac_bigsur_start_joint.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/assets/mac_bigsur_start_joint.png -------------------------------------------------------------------------------- /assets/mac_calc_multi_finish.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/assets/mac_calc_multi_finish.jpg -------------------------------------------------------------------------------- /assets/mac_calc_one_start.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/assets/mac_calc_one_start.jpg -------------------------------------------------------------------------------- /assets/mac_context_menu_item.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/assets/mac_context_menu_item.jpg -------------------------------------------------------------------------------- /assets/mac_new_progress_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/assets/mac_new_progress_dark.png -------------------------------------------------------------------------------- /assets/mac_new_progress_joint.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/assets/mac_new_progress_joint.png -------------------------------------------------------------------------------- /assets/mac_new_progress_light.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/assets/mac_new_progress_light.png -------------------------------------------------------------------------------- /assets/mac_ui.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/assets/mac_ui.jpg -------------------------------------------------------------------------------- /assets/sflogo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/assets/sflogo.png -------------------------------------------------------------------------------- /assets/win_uwp_about_dark_cut.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/assets/win_uwp_about_dark_cut.jpg -------------------------------------------------------------------------------- /assets/win_uwp_about_light_cut.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/assets/win_uwp_about_light_cut.jpg -------------------------------------------------------------------------------- /assets/win_uwp_calc_context_dark_cut.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/assets/win_uwp_calc_context_dark_cut.jpg -------------------------------------------------------------------------------- /assets/win_uwp_calc_context_light_cut.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/assets/win_uwp_calc_context_light_cut.jpg -------------------------------------------------------------------------------- /assets/win_uwp_calc_done_dark_cut.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/assets/win_uwp_calc_done_dark_cut.jpg -------------------------------------------------------------------------------- /assets/win_uwp_calc_done_light_cut.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/assets/win_uwp_calc_done_light_cut.jpg -------------------------------------------------------------------------------- /assets/win_uwp_calc_proc_dark_cut.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/assets/win_uwp_calc_proc_dark_cut.jpg -------------------------------------------------------------------------------- /assets/win_uwp_calc_proc_light_cut.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/assets/win_uwp_calc_proc_light_cut.jpg -------------------------------------------------------------------------------- /assets/win_uwp_calc_proc_light_cut_fusion.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/assets/win_uwp_calc_proc_light_cut_fusion.jpg -------------------------------------------------------------------------------- /assets/win_uwp_context_menu_dark_cut.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/assets/win_uwp_context_menu_dark_cut.png -------------------------------------------------------------------------------- /assets/win_uwp_context_menu_light_cut.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/assets/win_uwp_context_menu_light_cut.png -------------------------------------------------------------------------------- /assets/win_uwp_start_dark_cut.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/assets/win_uwp_start_dark_cut.jpg -------------------------------------------------------------------------------- /assets/win_uwp_start_light_cut.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/assets/win_uwp_start_light_cut.jpg -------------------------------------------------------------------------------- /sub-proj/fHashClrBridge/AdvTaskbarHelper.cpp: -------------------------------------------------------------------------------- 1 | #include "stdafx.h" 2 | #include "AdvTaskbarHelper.h" 3 | 4 | using namespace System; 5 | using namespace SunJWBase; 6 | 7 | AdvTaskbarHelper::AdvTaskbarHelper(IntPtr hWnd) 8 | :m_hWnd((HWND)hWnd.ToPointer()), m_pTaskbarList3(NULL) 9 | { 10 | ITaskbarList3 *pTaskbarListTemp = NULL; 11 | if (SUCCEEDED(WindowsComm::InitTaskbarList3(&pTaskbarListTemp))) 12 | m_pTaskbarList3 = pTaskbarListTemp; 13 | } 14 | 15 | void AdvTaskbarHelper::SetTaskbarProg(ULONGLONG ullValue) 16 | { 17 | if (m_hWnd == NULL || m_pTaskbarList3 == NULL) 18 | return; 19 | WindowsComm::SetTaskbarList3Value(m_pTaskbarList3, m_hWnd, ullValue); 20 | } 21 | -------------------------------------------------------------------------------- /sub-proj/fHashClrBridge/AdvTaskbarHelper.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "WinCommon/AdvTaskbar.h" 4 | 5 | namespace SunJWBase 6 | { 7 | public ref class AdvTaskbarHelper sealed 8 | { 9 | public: 10 | AdvTaskbarHelper(System::IntPtr hWnd); 11 | 12 | void SetTaskbarProg(ULONGLONG ullValue); 13 | 14 | private: 15 | HWND m_hWnd; 16 | ITaskbarList3 *m_pTaskbarList3; 17 | }; 18 | } 19 | -------------------------------------------------------------------------------- /sub-proj/fHashClrBridge/AssemblyInfo.cpp: -------------------------------------------------------------------------------- 1 | #include "stdafx.h" 2 | #include "version.h" 3 | 4 | using namespace System::Reflection; 5 | 6 | [assembly: AssemblyVersion(STR_VERSION_WUI)]; 7 | [assembly: AssemblyFileVersion(STR_VERSION_WUI)]; 8 | -------------------------------------------------------------------------------- /sub-proj/fHashClrBridge/ClrHelper.cpp: -------------------------------------------------------------------------------- 1 | #include "stdafx.h" 2 | 3 | #include "ClrHelper.h" 4 | #include 5 | #include 6 | #include 7 | 8 | using namespace std; 9 | using namespace msclr::interop; 10 | using namespace System; 11 | 12 | std::string sunjwbase::ConvertSystemStringToStdString(System::String^ mstr) 13 | { 14 | return marshal_as(mstr); 15 | } 16 | 17 | std::wstring sunjwbase::ConvertSystemStringToStdWstring(System::String^ mstr) 18 | { 19 | return marshal_as(mstr); 20 | } 21 | 22 | System::String^ sunjwbase::ConvertStrToSystemString(LPCSTR lpStrSource) 23 | { 24 | return marshal_as(lpStrSource); 25 | } 26 | 27 | System::String^ sunjwbase::ConvertWstrToSystemString(LPCWSTR lpWstrSource) 28 | { 29 | return marshal_as(lpWstrSource); 30 | } 31 | -------------------------------------------------------------------------------- /sub-proj/fHashClrBridge/ClrHelper.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | #include 5 | 6 | namespace sunjwbase 7 | { 8 | std::string ConvertSystemStringToStdString(System::String^ mstr); 9 | 10 | std::wstring ConvertSystemStringToStdWstring(System::String^ mstr); 11 | 12 | System::String^ ConvertStrToSystemString(LPCSTR lpStrSource); 13 | 14 | System::String^ ConvertWstrToSystemString(LPCWSTR lpWstrSource); 15 | 16 | #if defined(_WIN32) && (defined(UNICODE) || defined(_UNICODE)) 17 | #define ConvertSystemStringToTstr ConvertSystemStringToStdWstring 18 | #define ConvertTstrToSystemString ConvertWstrToSystemString 19 | #else 20 | #define ConvertSystemStringToTstr ConvertSystemStringToStdString 21 | #define ConvertTstrToSystemString ConvertStrToSystemString 22 | #endif 23 | } 24 | -------------------------------------------------------------------------------- /sub-proj/fHashClrBridge/HashMgmtClr.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "Common/Global.h" 4 | #include "UIBridgeDelegates.h" 5 | #include "UIBridgeWUI.h" 6 | 7 | namespace FilesHashWUI 8 | { 9 | public ref class HashMgmtClr sealed 10 | { 11 | public: 12 | HashMgmtClr(UIBridgeDelegates^ uiBridgeDelegates); 13 | 14 | virtual ~HashMgmtClr() 15 | { 16 | // clean up code to release managed resource 17 | // ... 18 | // to avoid code duplication, 19 | // call finalizer to release unmanaged resources 20 | this->!HashMgmtClr(); 21 | } 22 | 23 | // finalizer cleans up unmanaged resources 24 | // destructor or garbage collector will 25 | // clean up managed resources 26 | !HashMgmtClr(); 27 | 28 | void Init(); 29 | void Clear(); 30 | 31 | void SetStop(bool val); 32 | void SetUppercase(bool val); 33 | System::UInt64 GetTotalSize(); 34 | 35 | void AddFiles(cli::array^ filePaths); 36 | void StartHashThread(); 37 | 38 | cli::array^ FindResult(System::String^ sstrHashToFind); 39 | 40 | private: 41 | UIBridgeWUI *m_pUiBridgeWUI; 42 | ThreadData *m_pThreadData; 43 | HANDLE m_hWorkThread; 44 | }; 45 | } 46 | -------------------------------------------------------------------------------- /sub-proj/fHashClrBridge/NativeHelper.cpp: -------------------------------------------------------------------------------- 1 | #include "stdafx.h" 2 | 3 | #include "NativeHelper.h" 4 | #include "WinCommon/WindowsComm.h" 5 | #include "WinCommon/ClipboardHelper.h" 6 | #include "ClrHelper.h" 7 | #include "Common/strhelper.h" 8 | 9 | using namespace std; 10 | using namespace System; 11 | using namespace SunJWBase; 12 | using namespace sunjwbase; 13 | 14 | NativeHelper::NativeHelper() 15 | { 16 | } 17 | 18 | String^ NativeHelper::GetTargetArch() 19 | { 20 | tstring tstrTarget; 21 | #if defined (_M_AMD64) 22 | tstrTarget = TEXT("x64"); 23 | #elif defined (_M_ARM64) 24 | tstrTarget = TEXT("arm64"); 25 | #endif 26 | String^ sstrTarget = ConvertTstrToSystemString(tstrTarget.c_str()); 27 | return sstrTarget; 28 | } 29 | 30 | String^ NativeHelper::GetWindowsInfo() 31 | { 32 | tstring tstrWinInfo = WindowsComm::GetWindowsInfo(); 33 | String^ sstrWinInfo = ConvertTstrToSystemString(tstrWinInfo.c_str()); 34 | return sstrWinInfo; 35 | } 36 | 37 | Boolean NativeHelper::SetClipboardText(String^ sstrCopyText) 38 | { 39 | tstring tstrCopyText = ConvertSystemStringToTstr(sstrCopyText); 40 | return WindowsComm::SetClipboardText(tstrCopyText); 41 | } 42 | -------------------------------------------------------------------------------- /sub-proj/fHashClrBridge/NativeHelper.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | namespace SunJWBase 4 | { 5 | public ref class NativeHelper sealed 6 | { 7 | public: 8 | NativeHelper(); 9 | 10 | System::String^ GetTargetArch(); 11 | System::String^ GetWindowsInfo(); 12 | 13 | System::Boolean SetClipboardText(System::String^ sstrCopyText); 14 | }; 15 | } 16 | -------------------------------------------------------------------------------- /sub-proj/fHashClrBridge/ResultDataNet.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | namespace FilesHashWUI 4 | { 5 | public enum class ResultStateNet 6 | { 7 | ResultNone = 0, 8 | ResultPath, 9 | ResultMeta, 10 | ResultAll, 11 | ResultError 12 | }; 13 | 14 | public value struct ResultDataNet 15 | { 16 | public: 17 | ResultStateNet EnumState; // State 18 | System::String^ Path; // Path 19 | System::UInt64 Size; // Size 20 | System::String^ ModifiedDate; // Modified date 21 | System::String^ Version; // Version 22 | System::String^ MD5; // MD5 23 | System::String^ SHA1; // SHA1 24 | System::String^ SHA256; // SHA256 25 | System::String^ SHA512; // SHA512 26 | System::String^ Error; // Error string 27 | }; 28 | } 29 | -------------------------------------------------------------------------------- /sub-proj/fHashClrBridge/UIBridgeDelegates.cpp: -------------------------------------------------------------------------------- 1 | #include "stdafx.h" 2 | #include "UIBridgeDelegates.h" 3 | 4 | using namespace System; 5 | using namespace FilesHashWUI; 6 | 7 | UIBridgeDelegates::UIBridgeDelegates() 8 | { 9 | } 10 | 11 | Int32 UIBridgeDelegates::GetProgMax() 12 | { 13 | return 100; 14 | } 15 | 16 | void UIBridgeDelegates::PreparingCalc() 17 | { 18 | PreparingCalcHandler(); 19 | } 20 | 21 | void UIBridgeDelegates::RemovePreparingCalc() 22 | { 23 | RemovePreparingCalcHandler(); 24 | } 25 | 26 | void UIBridgeDelegates::CalcStop() 27 | { 28 | CalcStopHandler(); 29 | } 30 | 31 | void UIBridgeDelegates::CalcFinish() 32 | { 33 | CalcFinishHandler(); 34 | } 35 | 36 | void UIBridgeDelegates::ShowFileName(ResultDataNet resultDataNet) 37 | { 38 | ShowFileNameHandler(resultDataNet); 39 | } 40 | 41 | void UIBridgeDelegates::ShowFileMeta(ResultDataNet resultDataNet) 42 | { 43 | ShowFileMetaHandler(resultDataNet); 44 | } 45 | 46 | void UIBridgeDelegates::ShowFileHash(ResultDataNet resultDataNet, bool uppercase) 47 | { 48 | ShowFileHashHandler(resultDataNet, uppercase); 49 | } 50 | 51 | void UIBridgeDelegates::ShowFileErr(ResultDataNet resultDataNet) 52 | { 53 | ShowFileErrHandler(resultDataNet); 54 | } 55 | 56 | void UIBridgeDelegates::UpdateProgWhole(Int32 value) 57 | { 58 | UpdateProgWholeHandler(value); 59 | } 60 | -------------------------------------------------------------------------------- /sub-proj/fHashClrBridge/UIBridgeDelegates.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "ResultDataNet.h" 4 | 5 | namespace FilesHashWUI 6 | { 7 | public delegate void CalcEventHandler(); 8 | public delegate void ResultEventHandler(ResultDataNet); 9 | public delegate void ResultHashEventHandler(ResultDataNet, bool); 10 | public delegate void CalcProgEventHandler(System::Int32); 11 | 12 | public ref class UIBridgeDelegates sealed 13 | { 14 | public: 15 | UIBridgeDelegates(); 16 | 17 | System::Int32 GetProgMax(); 18 | 19 | void PreparingCalc(); 20 | void RemovePreparingCalc(); 21 | void CalcStop(); 22 | void CalcFinish(); 23 | 24 | void ShowFileName(ResultDataNet resultDataNet); 25 | void ShowFileMeta(ResultDataNet resultDataNet); 26 | void ShowFileHash(ResultDataNet resultDataNet, bool uppercase); 27 | void ShowFileErr(ResultDataNet resultDataNet); 28 | 29 | void UpdateProgWhole(System::Int32 value); 30 | 31 | event CalcEventHandler^ PreparingCalcHandler; 32 | event CalcEventHandler^ RemovePreparingCalcHandler; 33 | event CalcEventHandler^ CalcStopHandler; 34 | event CalcEventHandler^ CalcFinishHandler; 35 | 36 | event ResultEventHandler^ ShowFileNameHandler; 37 | event ResultEventHandler^ ShowFileMetaHandler; 38 | event ResultHashEventHandler^ ShowFileHashHandler; 39 | event ResultEventHandler^ ShowFileErrHandler; 40 | 41 | event CalcProgEventHandler^ UpdateProgWholeHandler; 42 | }; 43 | } 44 | -------------------------------------------------------------------------------- /sub-proj/fHashClrBridge/UIBridgeWUI.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | 5 | #include "Common/UIBridgeBase.h" 6 | #include "Common/Global.h" 7 | 8 | #include "UIBridgeDelegates.h" 9 | #include "ResultDataNet.h" 10 | 11 | namespace FilesHashWUI 12 | { 13 | ResultDataNet ConvertResultDataToNet(const ResultData& result); 14 | 15 | class UIBridgeWUI : public UIBridgeBase 16 | { 17 | public: 18 | UIBridgeWUI(UIBridgeDelegates^ uiBridgeDelegates); 19 | virtual ~UIBridgeWUI(); 20 | 21 | virtual void lockData(); 22 | virtual void unlockData(); 23 | 24 | virtual void preparingCalc(); 25 | virtual void removePreparingCalc(); 26 | virtual void calcStop(); 27 | virtual void calcFinish(); 28 | 29 | virtual void showFileName(const ResultData& result); 30 | virtual void showFileMeta(const ResultData& result); 31 | virtual void showFileHash(const ResultData& result, bool uppercase); 32 | virtual void showFileErr(const ResultData& result); 33 | 34 | virtual int getProgMax(); 35 | virtual void updateProg(int value); 36 | virtual void updateProgWhole(int value); 37 | 38 | virtual void fileCalcFinish(); 39 | virtual void fileFinish(); 40 | 41 | private: 42 | msclr::auto_gcroot m_uiBridgeDelegates; 43 | }; 44 | } 45 | -------------------------------------------------------------------------------- /sub-proj/fHashClrBridge/fHashClrBridge.rc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/sub-proj/fHashClrBridge/fHashClrBridge.rc -------------------------------------------------------------------------------- /sub-proj/fHashClrBridge/resource.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/sub-proj/fHashClrBridge/resource.h -------------------------------------------------------------------------------- /sub-proj/fHashClrBridge/stdafx.cpp: -------------------------------------------------------------------------------- 1 | // pch.cpp: 与预编译标头对应的源文件 2 | 3 | #include "stdafx.h" 4 | 5 | // 当使用预编译的头时,需要使用此源文件,编译才能成功。 6 | -------------------------------------------------------------------------------- /sub-proj/fHashClrBridge/stdafx.h: -------------------------------------------------------------------------------- 1 | // pch.h: 这是预编译标头文件。 2 | // 下方列出的文件仅编译一次,提高了将来生成的生成性能。 3 | // 这还将影响 IntelliSense 性能,包括代码完成和许多代码浏览功能。 4 | // 但是,如果此处列出的文件中的任何一个在生成之间有更新,它们全部都将被重新编译。 5 | // 请勿在此处添加要频繁更新的文件,这将使得性能优势无效。 6 | 7 | #ifndef PCH_H 8 | #define PCH_H 9 | 10 | // 添加要在此处预编译的标头 11 | #include 12 | 13 | #endif //PCH_H 14 | -------------------------------------------------------------------------------- /sub-proj/fHashShlExt/ReadMe.txt: -------------------------------------------------------------------------------- 1 | ======================================================================== 2 | 活动模板库 : fHashShlExt 项目概述 3 | ======================================================================== 4 | 5 | 应用程序向导已为您创建了此 fHashShlExt 项目,作为编写动态链接库 (DLL) 的起点。 6 | 7 | 本文件概要介绍组成项目的每个文件的内容。 8 | 9 | fHashShlExt.vcproj 10 | 这是使用应用程序向导生成的 VC++ 项目的主项目文件, 11 | 其中包含生成该文件的 Visual C++ 的版本信息,以及有关使用应用程序向导选择的平台、配置和项目功能的信息。 12 | 13 | fHashShlExt.idl 14 | 此文件包含项目中定义的类型库、接口和 co-class 的 IDL 定义。 15 | 此文件将由 MIDL 编译器进行处理以生成: 16 | C++ 接口定义和 GUID 声明 (fHashShlExt.h) 17 | GUID 定义 (fHashShlExt_i.c) 18 | 类型库 (fHashShlExt.tlb) 19 | 封送处理代码 (fHashShlExt_p.c 和 dlldata.c) 20 | 21 | fHashShlExt.h 22 | 此文件包含 fHashShlExt.idl 中定义的项目的 C++ 接口定义和 GUID 声明。它将在编译过程中由 MIDL 重新生成。 23 | 24 | fHashShlExt.cpp 25 | 此文件包含对象映射和 DLL 导出的实现。 26 | 27 | fHashShlExt.rc 28 | 这是程序使用的所有 Microsoft Windows 资源的列表。 29 | 30 | fHashShlExt.def 31 | 此模块定义文件为链接器提供有关 DLL 所要求的导出的信息,其中包含用于以下内容的导出: 32 | DllGetClassObject 33 | DllCanUnloadNow 34 | DllRegisterServer 35 | DllUnregisterServer 36 | 37 | ///////////////////////////////////////////////////////////////////////////// 38 | 其他标准文件: 39 | 40 | StdAfx.h, StdAfx.cpp 41 | 这些文件用于生成名为 fHashShlExt.pch 的预编译头 (PCH) 文件和名为 StdAfx.obj 的预编译类型文件。 42 | 43 | Resource.h 44 | 这是用于定义资源 ID 的标准头文件。 45 | 46 | ///////////////////////////////////////////////////////////////////////////// 47 | 代理/存根 (stub) DLL 项目和模块定义文件: 48 | 49 | fHashShlExtps.vcproj 50 | 此文件是用于生成代理/存根 (stub) DLL 的项目文件(若有必要)。 51 | 主项目中的 IDL 文件必须至少包含一个接口,并且 52 | 在生成代理/存根 (stub) DLL 之前必须先编译 IDL 文件。 此进程生成 53 | dlldata.c、fHashShlExt_i.c 和 fHashShlExt_p.c,这些文件是 54 | 生成代理/存根 (stub) DLL 所必需的。 55 | 56 | fHashShlExtps.def 57 | 此模块定义文件为链接器提供有关代理/存根 (stub) 所要求的导出的信息。 58 | 59 | ///////////////////////////////////////////////////////////////////////////// -------------------------------------------------------------------------------- /sub-proj/fHashShlExt/dlldata.c: -------------------------------------------------------------------------------- 1 | /********************************************************* 2 | DllData file -- generated by MIDL compiler 3 | 4 | DO NOT ALTER THIS FILE 5 | 6 | This file is regenerated by MIDL on every IDL file compile. 7 | 8 | To completely reconstruct this file, delete it and rerun MIDL 9 | on all the IDL files in this DLL, specifying this file for the 10 | /dlldata command line option 11 | 12 | *********************************************************/ 13 | 14 | #define PROXY_DELEGATION 15 | 16 | #include 17 | 18 | #ifdef __cplusplus 19 | extern "C" { 20 | #endif 21 | 22 | EXTERN_PROXY_FILE( fHashShlExt ) 23 | 24 | 25 | PROXYFILE_LIST_START 26 | /* Start of list */ 27 | REFERENCE_PROXY_FILE( fHashShlExt ), 28 | /* End of list */ 29 | PROXYFILE_LIST_END 30 | 31 | 32 | DLLDATA_ROUTINES( aProxyFileList, GET_DLL_CLSID ) 33 | 34 | #ifdef __cplusplus 35 | } /*extern "C" */ 36 | #endif 37 | 38 | /* end of generated dlldata file */ 39 | -------------------------------------------------------------------------------- /sub-proj/fHashShlExt/dllmain.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/sub-proj/fHashShlExt/dllmain.cpp -------------------------------------------------------------------------------- /sub-proj/fHashShlExt/dllmain.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/sub-proj/fHashShlExt/dllmain.h -------------------------------------------------------------------------------- /sub-proj/fHashShlExt/fHashShellExt.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/sub-proj/fHashShlExt/fHashShellExt.cpp -------------------------------------------------------------------------------- /sub-proj/fHashShlExt/fHashShellExt.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/sub-proj/fHashShlExt/fHashShellExt.h -------------------------------------------------------------------------------- /sub-proj/fHashShlExt/fHashShellExt.rgs: -------------------------------------------------------------------------------- 1 | HKCR 2 | { 3 | NoRemove CLSID 4 | { 5 | ForceRemove {2B1ADB34-87ED-40E4-84E2-012D298F5370} = s 'fHashShellExt Class' 6 | { 7 | ForceRemove 'Programmable' 8 | InprocServer32 = s '%MODULE%' 9 | { 10 | val ThreadingModel = s 'Apartment' 11 | } 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /sub-proj/fHashShlExt/fHashShlExt.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/sub-proj/fHashShlExt/fHashShlExt.cpp -------------------------------------------------------------------------------- /sub-proj/fHashShlExt/fHashShlExt.def: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/sub-proj/fHashShlExt/fHashShlExt.def -------------------------------------------------------------------------------- /sub-proj/fHashShlExt/fHashShlExt.idl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/sub-proj/fHashShlExt/fHashShlExt.idl -------------------------------------------------------------------------------- /sub-proj/fHashShlExt/fHashShlExt.rc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/sub-proj/fHashShlExt/fHashShlExt.rc -------------------------------------------------------------------------------- /sub-proj/fHashShlExt/fHashShlExt.rgs: -------------------------------------------------------------------------------- 1 | HKCR 2 | { 3 | NoRemove AppID 4 | { 5 | '%APPID%' = s 'fHashShlExt' 6 | 'fHashShlExt.DLL' 7 | { 8 | val AppID = s '%APPID%' 9 | } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /sub-proj/fHashShlExt/fHashShlExtStringsBase.cpp: -------------------------------------------------------------------------------- 1 | #include "stdafx.h" 2 | 3 | #include "fHashShlExtStringsBase.h" 4 | 5 | #include 6 | 7 | fHashShlExtStringsBase::fHashShlExtStringsBase() 8 | { 9 | // Shell ext 10 | m_stringsMap[_T("SHELL_EXT_ITEM")] = _T("Hash with fHash"); 11 | m_stringsMap[_T("SHELL_EXT_TOO_MANY_FILES")] = _T("Selected too many files"); 12 | } 13 | -------------------------------------------------------------------------------- /sub-proj/fHashShlExt/fHashShlExtStringsBase.h: -------------------------------------------------------------------------------- 1 | #ifndef _FHASH_SHLEXT_STRINGS_BASE_H_ 2 | #define _FHASH_SHLEXT_STRINGS_BASE_H_ 3 | 4 | #include "WinCommon/WindowsStrings.h" 5 | 6 | class fHashShlExtStringsBase: public WindowsStrings::WindowsStringsMap 7 | { 8 | public: 9 | fHashShlExtStringsBase(); 10 | }; 11 | 12 | #endif 13 | -------------------------------------------------------------------------------- /sub-proj/fHashShlExt/fHashShlExtStringsZHCN.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/sub-proj/fHashShlExt/fHashShlExtStringsZHCN.cpp -------------------------------------------------------------------------------- /sub-proj/fHashShlExt/fHashShlExtStringsZHCN.h: -------------------------------------------------------------------------------- 1 | #ifndef _FHASH_SHLEXT_STRINGS_ZHCN_H_ 2 | #define _FHASH_SHLEXT_STRINGS_ZHCN_H_ 3 | 4 | #include "WinCommon/WindowsStrings.h" 5 | 6 | class fHashShlExtStringsZHCN: public WindowsStrings::WindowsStringsMap 7 | { 8 | public: 9 | fHashShlExtStringsZHCN(); 10 | }; 11 | 12 | #endif 13 | -------------------------------------------------------------------------------- /sub-proj/fHashShlExt/fHashShlExtps.def: -------------------------------------------------------------------------------- 1 | 2 | LIBRARY "fHashShlExtPS" 3 | 4 | EXPORTS 5 | DllGetClassObject PRIVATE 6 | DllCanUnloadNow PRIVATE 7 | DllRegisterServer PRIVATE 8 | DllUnregisterServer PRIVATE 9 | -------------------------------------------------------------------------------- /sub-proj/fHashShlExt/regext.bat: -------------------------------------------------------------------------------- 1 | regsvr32 /i fHashShlExt.dll 2 | REGEDIT /S regext.reg -------------------------------------------------------------------------------- /sub-proj/fHashShlExt/regext.reg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/sub-proj/fHashShlExt/regext.reg -------------------------------------------------------------------------------- /sub-proj/fHashShlExt/resource.h: -------------------------------------------------------------------------------- 1 | //{{NO_DEPENDENCIES}} 2 | // Microsoft Visual C++ generated include file. 3 | // Used by fHashShlExt.rc 4 | // 5 | #define IDS_PROJNAME 100 6 | #define IDR_FHASHSHLEXT 101 7 | #define IDR_FHASHSHELLEXT 102 8 | 9 | // Next default values for new objects 10 | // 11 | #ifdef APSTUDIO_INVOKED 12 | #ifndef APSTUDIO_READONLY_SYMBOLS 13 | #define _APS_NEXT_RESOURCE_VALUE 201 14 | #define _APS_NEXT_COMMAND_VALUE 32768 15 | #define _APS_NEXT_CONTROL_VALUE 201 16 | #define _APS_NEXT_SYMED_VALUE 103 17 | #endif 18 | #endif 19 | -------------------------------------------------------------------------------- /sub-proj/fHashShlExt/stdafx.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/sub-proj/fHashShlExt/stdafx.cpp -------------------------------------------------------------------------------- /sub-proj/fHashShlExt/stdafx.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/sub-proj/fHashShlExt/stdafx.h -------------------------------------------------------------------------------- /sub-proj/fHashShlExt/targetver.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/sub-proj/fHashShlExt/targetver.h -------------------------------------------------------------------------------- /sub-proj/fHashUwpNative/framework.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #define WIN32_LEAN_AND_MEAN // 从 Windows 头文件中排除极少使用的内容 4 | 5 | #include 6 | -------------------------------------------------------------------------------- /sub-proj/fHashUwpNative/stdafx.cpp: -------------------------------------------------------------------------------- 1 | // pch.cpp: 与预编译标头对应的源文件 2 | 3 | #include "stdafx.h" 4 | 5 | // 当使用预编译的头时,需要使用此源文件,编译才能成功。 6 | -------------------------------------------------------------------------------- /sub-proj/fHashUwpNative/stdafx.h: -------------------------------------------------------------------------------- 1 | // pch.h: 这是预编译标头文件。 2 | // 下方列出的文件仅编译一次,提高了将来生成的生成性能。 3 | // 这还将影响 IntelliSense 性能,包括代码完成和许多代码浏览功能。 4 | // 但是,如果此处列出的文件中的任何一个在生成之间有更新,它们全部都将被重新编译。 5 | // 请勿在此处添加要频繁更新的文件,这将使得性能优势无效。 6 | 7 | #ifndef PCH_H 8 | #define PCH_H 9 | 10 | // 添加要在此处预编译的标头 11 | #include "framework.h" 12 | 13 | #endif //PCH_H 14 | -------------------------------------------------------------------------------- /sub-proj/fHashUwpShellExt/Dll.def: -------------------------------------------------------------------------------- 1 | EXPORTS 2 | DllCanUnloadNow PRIVATE 3 | DllGetClassObject PRIVATE 4 | DllRegisterServer PRIVATE 5 | DllUnregisterServer PRIVATE -------------------------------------------------------------------------------- /sub-proj/fHashUwpShellExt/Dll.h: -------------------------------------------------------------------------------- 1 | // THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF 2 | // ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO 3 | // THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A 4 | // PARTICULAR PURPOSE. 5 | // 6 | // Copyright (c) Microsoft Corporation. All rights reserved 7 | 8 | #pragma once 9 | #include "ShellHelpers.h" 10 | #include "RegisterExtension.h" 11 | #include 12 | #include // std::nothrow 13 | 14 | void DllAddRef(); 15 | void DllRelease(); 16 | 17 | // use UUDIGEN.EXE to generate unique CLSID values for your objects 18 | #if defined (_DEBUG) 19 | class __declspec(uuid("DFCD2B9E-91B8-4529-B8FD-A512A2046D52")) CExplorerCommandVerb; 20 | #else 21 | class __declspec(uuid("F4137605-293D-4FE1-A223-9C53CC2D3949")) CExplorerCommandVerb; 22 | #endif 23 | 24 | HRESULT CExplorerCommandVerb_CreateInstance(REFIID riid, void **ppv); 25 | HRESULT CExplorerCommandVerb_RegisterUnRegister(bool fRegister); 26 | -------------------------------------------------------------------------------- /sub-proj/fHashUwpShellExt/UwpShellExtStringsBase.cpp: -------------------------------------------------------------------------------- 1 | #include "UwpShellExtStringsBase.h" 2 | 3 | #include 4 | 5 | UwpShlExtStringsBase::UwpShlExtStringsBase() 6 | { 7 | // Shell ext 8 | #if defined (_DEBUG) 9 | m_stringsMap[_T("SHELL_EXT_DISPLAY_NAME")] = _T("Hash with fHash UWP DEV"); 10 | #else 11 | m_stringsMap[_T("SHELL_EXT_DISPLAY_NAME")] = _T("Hash with fHash UWP"); 12 | #endif 13 | } 14 | -------------------------------------------------------------------------------- /sub-proj/fHashUwpShellExt/UwpShellExtStringsBase.h: -------------------------------------------------------------------------------- 1 | #ifndef _UWP_SHLEXT_STRINGS_BASE_H_ 2 | #define _UWP_SHLEXT_STRINGS_BASE_H_ 3 | 4 | #include "WinCommon/WindowsStrings.h" 5 | 6 | class UwpShlExtStringsBase: public WindowsStrings::WindowsStringsMap 7 | { 8 | public: 9 | UwpShlExtStringsBase(); 10 | }; 11 | 12 | #endif 13 | -------------------------------------------------------------------------------- /sub-proj/fHashUwpShellExt/UwpShellExtStringsZHCN.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/sub-proj/fHashUwpShellExt/UwpShellExtStringsZHCN.cpp -------------------------------------------------------------------------------- /sub-proj/fHashUwpShellExt/UwpShellExtStringsZHCN.h: -------------------------------------------------------------------------------- 1 | #ifndef _TEST_SHLEXT_STRINGS_ZHCN_H_ 2 | #define _TEST_SHLEXT_STRINGS_ZHCN_H_ 3 | 4 | #include "WinCommon/WindowsStrings.h" 5 | 6 | class UwpShlExtStringsZHCN: public WindowsStrings::WindowsStringsMap 7 | { 8 | public: 9 | UwpShlExtStringsZHCN(); 10 | }; 11 | 12 | #endif 13 | -------------------------------------------------------------------------------- /sub-proj/fHashUwpShellExt/fHashUwpShellExt.rc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/sub-proj/fHashUwpShellExt/fHashUwpShellExt.rc -------------------------------------------------------------------------------- /sub-proj/fHashUwpShellExt/fHashUwpShellExt.vcxproj.user: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | -------------------------------------------------------------------------------- /sub-proj/fHashUwpShellExt/pch.h: -------------------------------------------------------------------------------- 1 | // An empty pch.h 2 | -------------------------------------------------------------------------------- /sub-proj/fHashUwpShellExt/resource.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/sub-proj/fHashUwpShellExt/resource.h -------------------------------------------------------------------------------- /sub-proj/fHashUwpShellExt/stdafx.h: -------------------------------------------------------------------------------- 1 | // An empty stdafx.h 2 | -------------------------------------------------------------------------------- /sub-proj/fHashWUINative/framework.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #define WIN32_LEAN_AND_MEAN // 从 Windows 头文件中排除极少使用的内容 4 | 5 | #include 6 | -------------------------------------------------------------------------------- /sub-proj/fHashWUINative/stdafx.cpp: -------------------------------------------------------------------------------- 1 | // pch.cpp: 与预编译标头对应的源文件 2 | 3 | #include "stdafx.h" 4 | 5 | // 当使用预编译的头时,需要使用此源文件,编译才能成功。 6 | -------------------------------------------------------------------------------- /sub-proj/fHashWUINative/stdafx.h: -------------------------------------------------------------------------------- 1 | // pch.h: 这是预编译标头文件。 2 | // 下方列出的文件仅编译一次,提高了将来生成的生成性能。 3 | // 这还将影响 IntelliSense 性能,包括代码完成和许多代码浏览功能。 4 | // 但是,如果此处列出的文件中的任何一个在生成之间有更新,它们全部都将被重新编译。 5 | // 请勿在此处添加要频繁更新的文件,这将使得性能优势无效。 6 | 7 | #ifndef PCH_H 8 | #define PCH_H 9 | 10 | // 添加要在此处预编译的标头 11 | #include "framework.h" 12 | 13 | #endif //PCH_H 14 | -------------------------------------------------------------------------------- /sub-proj/fHashWUIShellExt/AppxShellExtStringsBase.cpp: -------------------------------------------------------------------------------- 1 | #include "AppxShellExtStringsBase.h" 2 | 3 | #include 4 | 5 | AppxShlExtStringsBase::AppxShlExtStringsBase() 6 | { 7 | // Shell ext 8 | #if defined (_DEBUG) 9 | m_stringsMap[_T("SHELL_EXT_DISPLAY_NAME")] = _T("Hash with fHash DEV"); 10 | #else 11 | m_stringsMap[_T("SHELL_EXT_DISPLAY_NAME")] = _T("Hash with fHash"); 12 | #endif 13 | } 14 | -------------------------------------------------------------------------------- /sub-proj/fHashWUIShellExt/AppxShellExtStringsBase.h: -------------------------------------------------------------------------------- 1 | #ifndef _APPX_SHLEXT_STRINGS_BASE_H_ 2 | #define _APPX_SHLEXT_STRINGS_BASE_H_ 3 | 4 | #include "WinCommon/WindowsStrings.h" 5 | 6 | class AppxShlExtStringsBase: public WindowsStrings::WindowsStringsMap 7 | { 8 | public: 9 | AppxShlExtStringsBase(); 10 | }; 11 | 12 | #endif 13 | -------------------------------------------------------------------------------- /sub-proj/fHashWUIShellExt/AppxShellExtStringsZHCN.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/sub-proj/fHashWUIShellExt/AppxShellExtStringsZHCN.cpp -------------------------------------------------------------------------------- /sub-proj/fHashWUIShellExt/AppxShellExtStringsZHCN.h: -------------------------------------------------------------------------------- 1 | #ifndef _APPX_SHLEXT_STRINGS_ZHCN_H_ 2 | #define _APPX_SHLEXT_STRINGS_ZHCN_H_ 3 | 4 | #include "WinCommon/WindowsStrings.h" 5 | 6 | class AppxShlExtStringsZHCN: public WindowsStrings::WindowsStringsMap 7 | { 8 | public: 9 | AppxShlExtStringsZHCN(); 10 | }; 11 | 12 | #endif 13 | -------------------------------------------------------------------------------- /sub-proj/fHashWUIShellExt/Dll.def: -------------------------------------------------------------------------------- 1 | EXPORTS 2 | DllCanUnloadNow PRIVATE 3 | DllGetClassObject PRIVATE 4 | DllRegisterServer PRIVATE 5 | DllUnregisterServer PRIVATE -------------------------------------------------------------------------------- /sub-proj/fHashWUIShellExt/Dll.h: -------------------------------------------------------------------------------- 1 | // THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF 2 | // ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO 3 | // THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A 4 | // PARTICULAR PURPOSE. 5 | // 6 | // Copyright (c) Microsoft Corporation. All rights reserved 7 | 8 | #pragma once 9 | #include "ShellHelpers.h" 10 | #include "RegisterExtension.h" 11 | #include 12 | #include // std::nothrow 13 | 14 | void DllAddRef(); 15 | void DllRelease(); 16 | 17 | // use UUDIGEN.EXE to generate unique CLSID values for your objects 18 | #if defined (_DEBUG) 19 | class __declspec(uuid("B34F7CE8-D206-4C32-AE59-A7E3581D0C91")) CExplorerCommandVerb; 20 | #else 21 | class __declspec(uuid("16FC91D0-EEF9-4BA6-9052-C0F9264D40AC")) CExplorerCommandVerb; 22 | #endif 23 | 24 | HRESULT CExplorerCommandVerb_CreateInstance(REFIID riid, void **ppv); 25 | HRESULT CExplorerCommandVerb_RegisterUnRegister(bool fRegister); 26 | -------------------------------------------------------------------------------- /sub-proj/fHashWUIShellExt/fHashWUIShellExt.rc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/sub-proj/fHashWUIShellExt/fHashWUIShellExt.rc -------------------------------------------------------------------------------- /sub-proj/fHashWUIShellExt/pch.h: -------------------------------------------------------------------------------- 1 | // An empty pch.h 2 | -------------------------------------------------------------------------------- /sub-proj/fHashWUIShellExt/resource.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/sub-proj/fHashWUIShellExt/resource.h -------------------------------------------------------------------------------- /sub-proj/fHashWUIShellExt/stdafx.h: -------------------------------------------------------------------------------- 1 | // An empty stdafx.h 2 | -------------------------------------------------------------------------------- /sub-proj/fHashWinRtBridge/CxHelper.cpp: -------------------------------------------------------------------------------- 1 | #include "stdafx.h" 2 | #include "CxHelper.h" 3 | 4 | using namespace Platform; 5 | using namespace sunjwbase; 6 | 7 | String^ sunjwbase::ConvertToPlatStr(LPCWSTR lpStrSource) 8 | { 9 | return (ref new String(lpStrSource)); 10 | } 11 | -------------------------------------------------------------------------------- /sub-proj/fHashWinRtBridge/CxHelper.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | namespace sunjwbase 4 | { 5 | Platform::String^ ConvertToPlatStr(LPCWSTR lpStrSource); 6 | } 7 | -------------------------------------------------------------------------------- /sub-proj/fHashWinRtBridge/HashMgmt.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | #include "Common/Global.h" 5 | #include "UIBridgeDelegate.h" 6 | #include "UIBridgeUwp.h" 7 | 8 | namespace FilesHashUwp 9 | { 10 | public ref class HashMgmt sealed 11 | { 12 | public: 13 | HashMgmt(UIBridgeDelegate^ uiBridgeDelegate); 14 | 15 | void Init(); 16 | void Clear(); 17 | 18 | void SetStop(Platform::Boolean val); 19 | void SetUppercase(Platform::Boolean val); 20 | uint64 GetTotalSize(); 21 | 22 | void AddFiles(const Platform::Array^ filePaths); 23 | void StartHashThread(); 24 | 25 | Platform::Array^ FindResult(Platform::String^ pstrHashToFind); 26 | 27 | private: 28 | std::shared_ptr m_spUiBridgeUwp; 29 | ThreadData m_threadData; 30 | HANDLE m_hWorkThread; 31 | }; 32 | } 33 | -------------------------------------------------------------------------------- /sub-proj/fHashWinRtBridge/NativeHelper.cpp: -------------------------------------------------------------------------------- 1 | #include "stdafx.h" 2 | 3 | #include "NativeHelper.h" 4 | #include "WinCommon/WindowsComm.h" 5 | #include "CxHelper.h" 6 | #include "Common/strhelper.h" 7 | 8 | using namespace std; 9 | using namespace Platform; 10 | using namespace FilesHashUwp; 11 | using namespace sunjwbase; 12 | 13 | NativeHelper::NativeHelper() 14 | { 15 | } 16 | 17 | String^ NativeHelper::GetTargetArch() 18 | { 19 | tstring tstrTarget; 20 | #if defined (_M_AMD64) 21 | tstrTarget = TEXT("x64"); 22 | #elif defined (_M_ARM64) 23 | tstrTarget = TEXT("arm64"); 24 | #endif 25 | String^ pstrTarget = ConvertToPlatStr(tstrTarget.c_str()); 26 | return pstrTarget; 27 | } 28 | 29 | String^ NativeHelper::GetWindowsInfo() 30 | { 31 | tstring tstrWinInfo = WindowsComm::GetWindowsInfo(); 32 | String^ pstrWinInfo = ConvertToPlatStr(tstrWinInfo.c_str()); 33 | return pstrWinInfo; 34 | } 35 | -------------------------------------------------------------------------------- /sub-proj/fHashWinRtBridge/NativeHelper.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | namespace FilesHashUwp 4 | { 5 | public ref class NativeHelper sealed 6 | { 7 | public: 8 | NativeHelper(); 9 | 10 | Platform::String^ GetTargetArch(); 11 | Platform::String^ GetWindowsInfo(); 12 | }; 13 | } 14 | -------------------------------------------------------------------------------- /sub-proj/fHashWinRtBridge/ResultDataNet.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | namespace FilesHashUwp 4 | { 5 | public enum class ResultStateNet 6 | { 7 | ResultNone = 0, 8 | ResultPath, 9 | ResultMeta, 10 | ResultAll, 11 | ResultError 12 | }; 13 | 14 | public value struct ResultDataNet 15 | { 16 | public: 17 | ResultStateNet EnumState; // State 18 | Platform::String^ Path; // Path 19 | uint64 Size; // Size 20 | Platform::String^ ModifiedDate; // Modified date 21 | Platform::String^ Version; // Version 22 | Platform::String^ MD5; // MD5 23 | Platform::String^ SHA1; // SHA1 24 | Platform::String^ SHA256; // SHA256 25 | Platform::String^ SHA512; // SHA512 26 | Platform::String^ Error; // Error string 27 | }; 28 | } 29 | -------------------------------------------------------------------------------- /sub-proj/fHashWinRtBridge/UIBridgeDelegate.cpp: -------------------------------------------------------------------------------- 1 | #include "stdafx.h" 2 | #include "UIBridgeDelegate.h" 3 | 4 | using namespace Platform; 5 | using namespace FilesHashUwp; 6 | 7 | UIBridgeDelegate::UIBridgeDelegate() 8 | { 9 | } 10 | 11 | int32 UIBridgeDelegate::GetProgMax() 12 | { 13 | return 100; 14 | } 15 | 16 | void UIBridgeDelegate::PreparingCalc() 17 | { 18 | PreparingCalcHandler(); 19 | } 20 | 21 | void UIBridgeDelegate::RemovePreparingCalc() 22 | { 23 | RemovePreparingCalcHandler(); 24 | } 25 | 26 | void UIBridgeDelegate::CalcStop() 27 | { 28 | CalcStopHandler(); 29 | } 30 | 31 | void UIBridgeDelegate::CalcFinish() 32 | { 33 | CalcFinishHandler(); 34 | } 35 | 36 | void UIBridgeDelegate::ShowFileName(ResultDataNet resultDataNet) 37 | { 38 | ShowFileNameHandler(resultDataNet); 39 | } 40 | 41 | void UIBridgeDelegate::ShowFileMeta(ResultDataNet resultDataNet) 42 | { 43 | ShowFileMetaHandler(resultDataNet); 44 | } 45 | 46 | void UIBridgeDelegate::ShowFileHash(ResultDataNet resultDataNet, Boolean uppercase) 47 | { 48 | ShowFileHashHandler(resultDataNet, uppercase); 49 | } 50 | 51 | void UIBridgeDelegate::ShowFileErr(ResultDataNet resultDataNet) 52 | { 53 | ShowFileErrHandler(resultDataNet); 54 | } 55 | 56 | void UIBridgeDelegate::UpdateProgWhole(int32 value) 57 | { 58 | UpdateProgWholeHandler(value); 59 | } 60 | -------------------------------------------------------------------------------- /sub-proj/fHashWinRtBridge/UIBridgeDelegate.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "ResultDataNet.h" 4 | 5 | namespace FilesHashUwp 6 | { 7 | public delegate void CalcEventHandler(); 8 | public delegate void ResultEventHandler(ResultDataNet); 9 | public delegate void ResultHashEventHandler(ResultDataNet, Platform::Boolean); 10 | public delegate void CalcProgEventHandler(int32); 11 | 12 | public ref class UIBridgeDelegate sealed 13 | { 14 | public: 15 | UIBridgeDelegate(); 16 | 17 | int32 GetProgMax(); 18 | 19 | void PreparingCalc(); 20 | void RemovePreparingCalc(); 21 | void CalcStop(); 22 | void CalcFinish(); 23 | 24 | void ShowFileName(ResultDataNet resultDataNet); 25 | void ShowFileMeta(ResultDataNet resultDataNet); 26 | void ShowFileHash(ResultDataNet resultDataNet, Platform::Boolean uppercase); 27 | void ShowFileErr(ResultDataNet resultDataNet); 28 | 29 | void UpdateProgWhole(int32 value); 30 | 31 | event CalcEventHandler^ PreparingCalcHandler; 32 | event CalcEventHandler^ RemovePreparingCalcHandler; 33 | event CalcEventHandler^ CalcStopHandler; 34 | event CalcEventHandler^ CalcFinishHandler; 35 | 36 | event ResultEventHandler^ ShowFileNameHandler; 37 | event ResultEventHandler^ ShowFileMetaHandler; 38 | event ResultHashEventHandler^ ShowFileHashHandler; 39 | event ResultEventHandler^ ShowFileErrHandler; 40 | 41 | event CalcProgEventHandler^ UpdateProgWholeHandler; 42 | }; 43 | } 44 | -------------------------------------------------------------------------------- /sub-proj/fHashWinRtBridge/UIBridgeUwp.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "Common/UIBridgeBase.h" 4 | #include "Common/Global.h" 5 | 6 | #include "UIBridgeDelegate.h" 7 | #include "ResultDataNet.h" 8 | 9 | namespace FilesHashUwp 10 | { 11 | class UIBridgeUwp : public UIBridgeBase 12 | { 13 | public: 14 | UIBridgeUwp(UIBridgeDelegate^ uiBridgeDelegate); 15 | virtual ~UIBridgeUwp(); 16 | 17 | virtual void lockData(); 18 | virtual void unlockData(); 19 | 20 | virtual void preparingCalc(); 21 | virtual void removePreparingCalc(); 22 | virtual void calcStop(); 23 | virtual void calcFinish(); 24 | 25 | virtual void showFileName(const ResultData& result); 26 | virtual void showFileMeta(const ResultData& result); 27 | virtual void showFileHash(const ResultData& result, bool uppercase); 28 | virtual void showFileErr(const ResultData& result); 29 | 30 | virtual int getProgMax(); 31 | virtual void updateProg(int value); 32 | virtual void updateProgWhole(int value); 33 | 34 | virtual void fileCalcFinish(); 35 | virtual void fileFinish(); 36 | 37 | static ResultDataNet ConvertResultDataToNet(const ResultData& result); 38 | 39 | private: 40 | UIBridgeDelegate^ m_uiBridgeDelegate; 41 | }; 42 | } 43 | -------------------------------------------------------------------------------- /sub-proj/fHashWinRtBridge/fHashWinRtBridge.rc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/sub-proj/fHashWinRtBridge/fHashWinRtBridge.rc -------------------------------------------------------------------------------- /sub-proj/fHashWinRtBridge/resource.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/sub-proj/fHashWinRtBridge/resource.h -------------------------------------------------------------------------------- /sub-proj/fHashWinRtBridge/stdafx.cpp: -------------------------------------------------------------------------------- 1 | #include "stdafx.h" 2 | -------------------------------------------------------------------------------- /sub-proj/fHashWinRtBridge/stdafx.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | #include 5 | -------------------------------------------------------------------------------- /trunk/fHash.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /trunk/fHash.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /trunk/fHashMacUI.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /trunk/fHashUwpWap/Images/LargeTile.scale-100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/trunk/fHashUwpWap/Images/LargeTile.scale-100.png -------------------------------------------------------------------------------- /trunk/fHashUwpWap/Images/LargeTile.scale-125.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/trunk/fHashUwpWap/Images/LargeTile.scale-125.png -------------------------------------------------------------------------------- /trunk/fHashUwpWap/Images/LargeTile.scale-150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/trunk/fHashUwpWap/Images/LargeTile.scale-150.png -------------------------------------------------------------------------------- /trunk/fHashUwpWap/Images/LargeTile.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/trunk/fHashUwpWap/Images/LargeTile.scale-200.png -------------------------------------------------------------------------------- /trunk/fHashUwpWap/Images/LargeTile.scale-400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/trunk/fHashUwpWap/Images/LargeTile.scale-400.png -------------------------------------------------------------------------------- /trunk/fHashUwpWap/Images/LockScreenLogo.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/trunk/fHashUwpWap/Images/LockScreenLogo.scale-200.png -------------------------------------------------------------------------------- /trunk/fHashUwpWap/Images/SmallTile.scale-100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/trunk/fHashUwpWap/Images/SmallTile.scale-100.png -------------------------------------------------------------------------------- /trunk/fHashUwpWap/Images/SmallTile.scale-125.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/trunk/fHashUwpWap/Images/SmallTile.scale-125.png -------------------------------------------------------------------------------- /trunk/fHashUwpWap/Images/SmallTile.scale-150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/trunk/fHashUwpWap/Images/SmallTile.scale-150.png -------------------------------------------------------------------------------- /trunk/fHashUwpWap/Images/SmallTile.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/trunk/fHashUwpWap/Images/SmallTile.scale-200.png -------------------------------------------------------------------------------- /trunk/fHashUwpWap/Images/SmallTile.scale-400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/trunk/fHashUwpWap/Images/SmallTile.scale-400.png -------------------------------------------------------------------------------- /trunk/fHashUwpWap/Images/SplashScreen.scale-100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/trunk/fHashUwpWap/Images/SplashScreen.scale-100.png -------------------------------------------------------------------------------- /trunk/fHashUwpWap/Images/SplashScreen.scale-125.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/trunk/fHashUwpWap/Images/SplashScreen.scale-125.png -------------------------------------------------------------------------------- /trunk/fHashUwpWap/Images/SplashScreen.scale-150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/trunk/fHashUwpWap/Images/SplashScreen.scale-150.png -------------------------------------------------------------------------------- /trunk/fHashUwpWap/Images/SplashScreen.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/trunk/fHashUwpWap/Images/SplashScreen.scale-200.png -------------------------------------------------------------------------------- /trunk/fHashUwpWap/Images/SplashScreen.scale-400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/trunk/fHashUwpWap/Images/SplashScreen.scale-400.png -------------------------------------------------------------------------------- /trunk/fHashUwpWap/Images/Square150x150Logo.scale-100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/trunk/fHashUwpWap/Images/Square150x150Logo.scale-100.png -------------------------------------------------------------------------------- /trunk/fHashUwpWap/Images/Square150x150Logo.scale-125.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/trunk/fHashUwpWap/Images/Square150x150Logo.scale-125.png -------------------------------------------------------------------------------- /trunk/fHashUwpWap/Images/Square150x150Logo.scale-150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/trunk/fHashUwpWap/Images/Square150x150Logo.scale-150.png -------------------------------------------------------------------------------- /trunk/fHashUwpWap/Images/Square150x150Logo.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/trunk/fHashUwpWap/Images/Square150x150Logo.scale-200.png -------------------------------------------------------------------------------- /trunk/fHashUwpWap/Images/Square150x150Logo.scale-400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/trunk/fHashUwpWap/Images/Square150x150Logo.scale-400.png -------------------------------------------------------------------------------- /trunk/fHashUwpWap/Images/Square44x44Logo.altform-lightunplated_targetsize-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/trunk/fHashUwpWap/Images/Square44x44Logo.altform-lightunplated_targetsize-16.png -------------------------------------------------------------------------------- /trunk/fHashUwpWap/Images/Square44x44Logo.altform-lightunplated_targetsize-24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/trunk/fHashUwpWap/Images/Square44x44Logo.altform-lightunplated_targetsize-24.png -------------------------------------------------------------------------------- /trunk/fHashUwpWap/Images/Square44x44Logo.altform-lightunplated_targetsize-256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/trunk/fHashUwpWap/Images/Square44x44Logo.altform-lightunplated_targetsize-256.png -------------------------------------------------------------------------------- /trunk/fHashUwpWap/Images/Square44x44Logo.altform-lightunplated_targetsize-32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/trunk/fHashUwpWap/Images/Square44x44Logo.altform-lightunplated_targetsize-32.png -------------------------------------------------------------------------------- /trunk/fHashUwpWap/Images/Square44x44Logo.altform-lightunplated_targetsize-48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/trunk/fHashUwpWap/Images/Square44x44Logo.altform-lightunplated_targetsize-48.png -------------------------------------------------------------------------------- /trunk/fHashUwpWap/Images/Square44x44Logo.altform-unplated_targetsize-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/trunk/fHashUwpWap/Images/Square44x44Logo.altform-unplated_targetsize-16.png -------------------------------------------------------------------------------- /trunk/fHashUwpWap/Images/Square44x44Logo.altform-unplated_targetsize-256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/trunk/fHashUwpWap/Images/Square44x44Logo.altform-unplated_targetsize-256.png -------------------------------------------------------------------------------- /trunk/fHashUwpWap/Images/Square44x44Logo.altform-unplated_targetsize-32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/trunk/fHashUwpWap/Images/Square44x44Logo.altform-unplated_targetsize-32.png -------------------------------------------------------------------------------- /trunk/fHashUwpWap/Images/Square44x44Logo.altform-unplated_targetsize-48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/trunk/fHashUwpWap/Images/Square44x44Logo.altform-unplated_targetsize-48.png -------------------------------------------------------------------------------- /trunk/fHashUwpWap/Images/Square44x44Logo.scale-100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/trunk/fHashUwpWap/Images/Square44x44Logo.scale-100.png -------------------------------------------------------------------------------- /trunk/fHashUwpWap/Images/Square44x44Logo.scale-125.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/trunk/fHashUwpWap/Images/Square44x44Logo.scale-125.png -------------------------------------------------------------------------------- /trunk/fHashUwpWap/Images/Square44x44Logo.scale-150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/trunk/fHashUwpWap/Images/Square44x44Logo.scale-150.png -------------------------------------------------------------------------------- /trunk/fHashUwpWap/Images/Square44x44Logo.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/trunk/fHashUwpWap/Images/Square44x44Logo.scale-200.png -------------------------------------------------------------------------------- /trunk/fHashUwpWap/Images/Square44x44Logo.scale-400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/trunk/fHashUwpWap/Images/Square44x44Logo.scale-400.png -------------------------------------------------------------------------------- /trunk/fHashUwpWap/Images/Square44x44Logo.targetsize-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/trunk/fHashUwpWap/Images/Square44x44Logo.targetsize-16.png -------------------------------------------------------------------------------- /trunk/fHashUwpWap/Images/Square44x44Logo.targetsize-24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/trunk/fHashUwpWap/Images/Square44x44Logo.targetsize-24.png -------------------------------------------------------------------------------- /trunk/fHashUwpWap/Images/Square44x44Logo.targetsize-24_altform-unplated.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/trunk/fHashUwpWap/Images/Square44x44Logo.targetsize-24_altform-unplated.png -------------------------------------------------------------------------------- /trunk/fHashUwpWap/Images/Square44x44Logo.targetsize-256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/trunk/fHashUwpWap/Images/Square44x44Logo.targetsize-256.png -------------------------------------------------------------------------------- /trunk/fHashUwpWap/Images/Square44x44Logo.targetsize-32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/trunk/fHashUwpWap/Images/Square44x44Logo.targetsize-32.png -------------------------------------------------------------------------------- /trunk/fHashUwpWap/Images/Square44x44Logo.targetsize-48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/trunk/fHashUwpWap/Images/Square44x44Logo.targetsize-48.png -------------------------------------------------------------------------------- /trunk/fHashUwpWap/Images/StoreLogo.backup.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/trunk/fHashUwpWap/Images/StoreLogo.backup.png -------------------------------------------------------------------------------- /trunk/fHashUwpWap/Images/StoreLogo.scale-100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/trunk/fHashUwpWap/Images/StoreLogo.scale-100.png -------------------------------------------------------------------------------- /trunk/fHashUwpWap/Images/StoreLogo.scale-125.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/trunk/fHashUwpWap/Images/StoreLogo.scale-125.png -------------------------------------------------------------------------------- /trunk/fHashUwpWap/Images/StoreLogo.scale-150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/trunk/fHashUwpWap/Images/StoreLogo.scale-150.png -------------------------------------------------------------------------------- /trunk/fHashUwpWap/Images/StoreLogo.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/trunk/fHashUwpWap/Images/StoreLogo.scale-200.png -------------------------------------------------------------------------------- /trunk/fHashUwpWap/Images/StoreLogo.scale-400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/trunk/fHashUwpWap/Images/StoreLogo.scale-400.png -------------------------------------------------------------------------------- /trunk/fHashUwpWap/Images/Wide310x150Logo.scale-100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/trunk/fHashUwpWap/Images/Wide310x150Logo.scale-100.png -------------------------------------------------------------------------------- /trunk/fHashUwpWap/Images/Wide310x150Logo.scale-125.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/trunk/fHashUwpWap/Images/Wide310x150Logo.scale-125.png -------------------------------------------------------------------------------- /trunk/fHashUwpWap/Images/Wide310x150Logo.scale-150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/trunk/fHashUwpWap/Images/Wide310x150Logo.scale-150.png -------------------------------------------------------------------------------- /trunk/fHashUwpWap/Images/Wide310x150Logo.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/trunk/fHashUwpWap/Images/Wide310x150Logo.scale-200.png -------------------------------------------------------------------------------- /trunk/fHashUwpWap/Images/Wide310x150Logo.scale-400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/trunk/fHashUwpWap/Images/Wide310x150Logo.scale-400.png -------------------------------------------------------------------------------- /trunk/fHashUwpWap/version.h: -------------------------------------------------------------------------------- 1 | #ifndef _VERSION_H_ 2 | #define _VERSION_H_ 3 | 4 | #define NUM_VERSION_UWP 3,3,4,0 5 | #define STR_VERSION_UWP "3.3.4.0" 6 | 7 | #endif 8 | -------------------------------------------------------------------------------- /trunk/fHashWUIWap/Images/LargeTile.scale-100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/trunk/fHashWUIWap/Images/LargeTile.scale-100.png -------------------------------------------------------------------------------- /trunk/fHashWUIWap/Images/LargeTile.scale-125.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/trunk/fHashWUIWap/Images/LargeTile.scale-125.png -------------------------------------------------------------------------------- /trunk/fHashWUIWap/Images/LargeTile.scale-150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/trunk/fHashWUIWap/Images/LargeTile.scale-150.png -------------------------------------------------------------------------------- /trunk/fHashWUIWap/Images/LargeTile.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/trunk/fHashWUIWap/Images/LargeTile.scale-200.png -------------------------------------------------------------------------------- /trunk/fHashWUIWap/Images/LargeTile.scale-400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/trunk/fHashWUIWap/Images/LargeTile.scale-400.png -------------------------------------------------------------------------------- /trunk/fHashWUIWap/Images/LockScreenLogo.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/trunk/fHashWUIWap/Images/LockScreenLogo.scale-200.png -------------------------------------------------------------------------------- /trunk/fHashWUIWap/Images/SmallTile.scale-100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/trunk/fHashWUIWap/Images/SmallTile.scale-100.png -------------------------------------------------------------------------------- /trunk/fHashWUIWap/Images/SmallTile.scale-125.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/trunk/fHashWUIWap/Images/SmallTile.scale-125.png -------------------------------------------------------------------------------- /trunk/fHashWUIWap/Images/SmallTile.scale-150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/trunk/fHashWUIWap/Images/SmallTile.scale-150.png -------------------------------------------------------------------------------- /trunk/fHashWUIWap/Images/SmallTile.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/trunk/fHashWUIWap/Images/SmallTile.scale-200.png -------------------------------------------------------------------------------- /trunk/fHashWUIWap/Images/SmallTile.scale-400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/trunk/fHashWUIWap/Images/SmallTile.scale-400.png -------------------------------------------------------------------------------- /trunk/fHashWUIWap/Images/SplashScreen.scale-100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/trunk/fHashWUIWap/Images/SplashScreen.scale-100.png -------------------------------------------------------------------------------- /trunk/fHashWUIWap/Images/SplashScreen.scale-125.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/trunk/fHashWUIWap/Images/SplashScreen.scale-125.png -------------------------------------------------------------------------------- /trunk/fHashWUIWap/Images/SplashScreen.scale-150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/trunk/fHashWUIWap/Images/SplashScreen.scale-150.png -------------------------------------------------------------------------------- /trunk/fHashWUIWap/Images/SplashScreen.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/trunk/fHashWUIWap/Images/SplashScreen.scale-200.png -------------------------------------------------------------------------------- /trunk/fHashWUIWap/Images/SplashScreen.scale-400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/trunk/fHashWUIWap/Images/SplashScreen.scale-400.png -------------------------------------------------------------------------------- /trunk/fHashWUIWap/Images/Square150x150Logo.scale-100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/trunk/fHashWUIWap/Images/Square150x150Logo.scale-100.png -------------------------------------------------------------------------------- /trunk/fHashWUIWap/Images/Square150x150Logo.scale-125.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/trunk/fHashWUIWap/Images/Square150x150Logo.scale-125.png -------------------------------------------------------------------------------- /trunk/fHashWUIWap/Images/Square150x150Logo.scale-150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/trunk/fHashWUIWap/Images/Square150x150Logo.scale-150.png -------------------------------------------------------------------------------- /trunk/fHashWUIWap/Images/Square150x150Logo.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/trunk/fHashWUIWap/Images/Square150x150Logo.scale-200.png -------------------------------------------------------------------------------- /trunk/fHashWUIWap/Images/Square150x150Logo.scale-400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/trunk/fHashWUIWap/Images/Square150x150Logo.scale-400.png -------------------------------------------------------------------------------- /trunk/fHashWUIWap/Images/Square44x44Logo.altform-lightunplated_targetsize-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/trunk/fHashWUIWap/Images/Square44x44Logo.altform-lightunplated_targetsize-16.png -------------------------------------------------------------------------------- /trunk/fHashWUIWap/Images/Square44x44Logo.altform-lightunplated_targetsize-24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/trunk/fHashWUIWap/Images/Square44x44Logo.altform-lightunplated_targetsize-24.png -------------------------------------------------------------------------------- /trunk/fHashWUIWap/Images/Square44x44Logo.altform-lightunplated_targetsize-256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/trunk/fHashWUIWap/Images/Square44x44Logo.altform-lightunplated_targetsize-256.png -------------------------------------------------------------------------------- /trunk/fHashWUIWap/Images/Square44x44Logo.altform-lightunplated_targetsize-32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/trunk/fHashWUIWap/Images/Square44x44Logo.altform-lightunplated_targetsize-32.png -------------------------------------------------------------------------------- /trunk/fHashWUIWap/Images/Square44x44Logo.altform-lightunplated_targetsize-48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/trunk/fHashWUIWap/Images/Square44x44Logo.altform-lightunplated_targetsize-48.png -------------------------------------------------------------------------------- /trunk/fHashWUIWap/Images/Square44x44Logo.altform-unplated_targetsize-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/trunk/fHashWUIWap/Images/Square44x44Logo.altform-unplated_targetsize-16.png -------------------------------------------------------------------------------- /trunk/fHashWUIWap/Images/Square44x44Logo.altform-unplated_targetsize-256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/trunk/fHashWUIWap/Images/Square44x44Logo.altform-unplated_targetsize-256.png -------------------------------------------------------------------------------- /trunk/fHashWUIWap/Images/Square44x44Logo.altform-unplated_targetsize-32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/trunk/fHashWUIWap/Images/Square44x44Logo.altform-unplated_targetsize-32.png -------------------------------------------------------------------------------- /trunk/fHashWUIWap/Images/Square44x44Logo.altform-unplated_targetsize-48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/trunk/fHashWUIWap/Images/Square44x44Logo.altform-unplated_targetsize-48.png -------------------------------------------------------------------------------- /trunk/fHashWUIWap/Images/Square44x44Logo.scale-100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/trunk/fHashWUIWap/Images/Square44x44Logo.scale-100.png -------------------------------------------------------------------------------- /trunk/fHashWUIWap/Images/Square44x44Logo.scale-125.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/trunk/fHashWUIWap/Images/Square44x44Logo.scale-125.png -------------------------------------------------------------------------------- /trunk/fHashWUIWap/Images/Square44x44Logo.scale-150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/trunk/fHashWUIWap/Images/Square44x44Logo.scale-150.png -------------------------------------------------------------------------------- /trunk/fHashWUIWap/Images/Square44x44Logo.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/trunk/fHashWUIWap/Images/Square44x44Logo.scale-200.png -------------------------------------------------------------------------------- /trunk/fHashWUIWap/Images/Square44x44Logo.scale-400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/trunk/fHashWUIWap/Images/Square44x44Logo.scale-400.png -------------------------------------------------------------------------------- /trunk/fHashWUIWap/Images/Square44x44Logo.targetsize-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/trunk/fHashWUIWap/Images/Square44x44Logo.targetsize-16.png -------------------------------------------------------------------------------- /trunk/fHashWUIWap/Images/Square44x44Logo.targetsize-24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/trunk/fHashWUIWap/Images/Square44x44Logo.targetsize-24.png -------------------------------------------------------------------------------- /trunk/fHashWUIWap/Images/Square44x44Logo.targetsize-24_altform-unplated.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/trunk/fHashWUIWap/Images/Square44x44Logo.targetsize-24_altform-unplated.png -------------------------------------------------------------------------------- /trunk/fHashWUIWap/Images/Square44x44Logo.targetsize-256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/trunk/fHashWUIWap/Images/Square44x44Logo.targetsize-256.png -------------------------------------------------------------------------------- /trunk/fHashWUIWap/Images/Square44x44Logo.targetsize-32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/trunk/fHashWUIWap/Images/Square44x44Logo.targetsize-32.png -------------------------------------------------------------------------------- /trunk/fHashWUIWap/Images/Square44x44Logo.targetsize-48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/trunk/fHashWUIWap/Images/Square44x44Logo.targetsize-48.png -------------------------------------------------------------------------------- /trunk/fHashWUIWap/Images/StoreLogo.backup.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/trunk/fHashWUIWap/Images/StoreLogo.backup.png -------------------------------------------------------------------------------- /trunk/fHashWUIWap/Images/StoreLogo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/trunk/fHashWUIWap/Images/StoreLogo.png -------------------------------------------------------------------------------- /trunk/fHashWUIWap/Images/StoreLogo.scale-100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/trunk/fHashWUIWap/Images/StoreLogo.scale-100.png -------------------------------------------------------------------------------- /trunk/fHashWUIWap/Images/StoreLogo.scale-125.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/trunk/fHashWUIWap/Images/StoreLogo.scale-125.png -------------------------------------------------------------------------------- /trunk/fHashWUIWap/Images/StoreLogo.scale-150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/trunk/fHashWUIWap/Images/StoreLogo.scale-150.png -------------------------------------------------------------------------------- /trunk/fHashWUIWap/Images/StoreLogo.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/trunk/fHashWUIWap/Images/StoreLogo.scale-200.png -------------------------------------------------------------------------------- /trunk/fHashWUIWap/Images/StoreLogo.scale-400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/trunk/fHashWUIWap/Images/StoreLogo.scale-400.png -------------------------------------------------------------------------------- /trunk/fHashWUIWap/Images/Wide310x150Logo.scale-100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/trunk/fHashWUIWap/Images/Wide310x150Logo.scale-100.png -------------------------------------------------------------------------------- /trunk/fHashWUIWap/Images/Wide310x150Logo.scale-125.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/trunk/fHashWUIWap/Images/Wide310x150Logo.scale-125.png -------------------------------------------------------------------------------- /trunk/fHashWUIWap/Images/Wide310x150Logo.scale-150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/trunk/fHashWUIWap/Images/Wide310x150Logo.scale-150.png -------------------------------------------------------------------------------- /trunk/fHashWUIWap/Images/Wide310x150Logo.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/trunk/fHashWUIWap/Images/Wide310x150Logo.scale-200.png -------------------------------------------------------------------------------- /trunk/fHashWUIWap/Images/Wide310x150Logo.scale-400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/trunk/fHashWUIWap/Images/Wide310x150Logo.scale-400.png -------------------------------------------------------------------------------- /trunk/fHashWUIWap/ShellExt/.gitignore: -------------------------------------------------------------------------------- 1 | *.dll 2 | -------------------------------------------------------------------------------- /trunk/fHashWUIWap/ShellExtDev/.gitignore: -------------------------------------------------------------------------------- 1 | *.dll 2 | -------------------------------------------------------------------------------- /trunk/fHashWUIWap/version.h: -------------------------------------------------------------------------------- 1 | #ifndef _VERSION_H_ 2 | #define _VERSION_H_ 3 | 4 | #define NUM_VERSION_WUI 3,11,11,0 5 | #define STR_VERSION_WUI "3.11.11.0" 6 | 7 | #endif 8 | -------------------------------------------------------------------------------- /trunk/fileshash15.sln: -------------------------------------------------------------------------------- 1 | Microsoft Visual Studio Solution File, Format Version 12.00 2 | # Visual Studio 15 3 | VisualStudioVersion = 15.0.28307.1300 4 | MinimumVisualStudioVersion = 10.0.40219.1 5 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "fHash", "fileshash.vcxproj", "{6644A084-A7A3-40C1-9DDD-3312944FED03}" 6 | EndProject 7 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "fHashShlExt", "..\sub-proj\fHashShlExt\fHashShlExt.vcxproj", "{853488C2-0156-427B-BD20-FD6ECF3782EC}" 8 | EndProject 9 | Global 10 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 11 | Debug|Win32 = Debug|Win32 12 | Debug|x64 = Debug|x64 13 | Release|Win32 = Release|Win32 14 | Release|x64 = Release|x64 15 | EndGlobalSection 16 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 17 | {6644A084-A7A3-40C1-9DDD-3312944FED03}.Debug|Win32.ActiveCfg = Debug|Win32 18 | {6644A084-A7A3-40C1-9DDD-3312944FED03}.Debug|Win32.Build.0 = Debug|Win32 19 | {6644A084-A7A3-40C1-9DDD-3312944FED03}.Debug|x64.ActiveCfg = Debug|x64 20 | {6644A084-A7A3-40C1-9DDD-3312944FED03}.Debug|x64.Build.0 = Debug|x64 21 | {6644A084-A7A3-40C1-9DDD-3312944FED03}.Release|Win32.ActiveCfg = Release|Win32 22 | {6644A084-A7A3-40C1-9DDD-3312944FED03}.Release|Win32.Build.0 = Release|Win32 23 | {6644A084-A7A3-40C1-9DDD-3312944FED03}.Release|x64.ActiveCfg = Release|x64 24 | {6644A084-A7A3-40C1-9DDD-3312944FED03}.Release|x64.Build.0 = Release|x64 25 | {853488C2-0156-427B-BD20-FD6ECF3782EC}.Debug|Win32.ActiveCfg = Debug|Win32 26 | {853488C2-0156-427B-BD20-FD6ECF3782EC}.Debug|Win32.Build.0 = Debug|Win32 27 | {853488C2-0156-427B-BD20-FD6ECF3782EC}.Debug|x64.ActiveCfg = Debug|x64 28 | {853488C2-0156-427B-BD20-FD6ECF3782EC}.Debug|x64.Build.0 = Debug|x64 29 | {853488C2-0156-427B-BD20-FD6ECF3782EC}.Release|Win32.ActiveCfg = Release|Win32 30 | {853488C2-0156-427B-BD20-FD6ECF3782EC}.Release|Win32.Build.0 = Release|Win32 31 | {853488C2-0156-427B-BD20-FD6ECF3782EC}.Release|x64.ActiveCfg = Release|x64 32 | {853488C2-0156-427B-BD20-FD6ECF3782EC}.Release|x64.Build.0 = Release|x64 33 | EndGlobalSection 34 | GlobalSection(SolutionProperties) = preSolution 35 | HideSolutionNode = FALSE 36 | EndGlobalSection 37 | GlobalSection(ExtensibilityGlobals) = postSolution 38 | SolutionGuid = {72E6341A-3B10-4A2C-82E8-8390AE16CAC6} 39 | EndGlobalSection 40 | EndGlobal 41 | -------------------------------------------------------------------------------- /trunk/package_macos_dmg.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | if [ -z "$1" ] 4 | then 5 | echo "Usage: package_dmg.sh " 6 | exit 7 | fi 8 | 9 | cur_dir=$PWD 10 | app_name="fHash.app" 11 | vol_name="fHash" 12 | src_folder=$1 13 | temp_dmg_path="fHash-VERSION-macOS.dmg" 14 | 15 | echo "Create DMG from [$src_folder]..." 16 | 17 | cd "$src_folder" 18 | 19 | # Clean 20 | rm -f .DS_Store 21 | # Make /Applications link 22 | ln -s /Applications Applications 23 | # Get version 24 | plist_version=$(/usr/libexec/PlistBuddy -c "Print :CFBundleShortVersionString" $app_name/Contents/Info.plist) 25 | temp_dmg_path=${temp_dmg_path/VERSION/$plist_version} 26 | 27 | cd "$cur_dir" 28 | 29 | # Create DMG 30 | hdiutil create -format UDBZ -fs HFS+ -volname "$vol_name" -srcfolder "$src_folder" "$temp_dmg_path" 31 | 32 | # Move to target directory 33 | echo "Move DMG to [$src_folder]" 34 | mv "$temp_dmg_path" "$src_folder" 35 | 36 | cd "$src_folder" 37 | 38 | # Clean 39 | rm -f Applications 40 | 41 | # Tar 42 | tar -cJvf fHash.app.tar.xz fHash.app 43 | 44 | cd "$cur_dir" 45 | 46 | echo "Done" 47 | 48 | -------------------------------------------------------------------------------- /trunk/source/Algorithms/SHA1.h: -------------------------------------------------------------------------------- 1 | /* 2 | 100% free public domain implementation of the SHA-1 algorithm 3 | 4 | === Test Vectors (from FIPS PUB 180-1) === 5 | 6 | "abc" 7 | A9993E36 4706816A BA3E2571 7850C26C 9CD0D89D 8 | 9 | "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq" 10 | 84983E44 1C3BD26E BAAE4AA1 F95129E5 E54670F1 11 | 12 | A million repetitions of "a" 13 | 34AA973C D4C4DAA4 F61EEB2B DBAD2731 6534016F 14 | */ 15 | 16 | #ifndef ___SHA1_H___ 17 | #define ___SHA1_H___ 18 | 19 | #include 20 | #include 21 | #include 22 | #include 23 | #include "endianness.h" 24 | 25 | #define MAX_FILE_READ_BUFFER 8000 26 | 27 | class CSHA1 28 | { 29 | public: 30 | #define ROL32(value, bits) (((value)<<(bits))|((value)>>(32-(bits)))) 31 | 32 | #ifdef LITTLE_ENDIAN 33 | #define SHABLK0(i) (block->l[i] = (ROL32(block->l[i],24) & 0xFF00FF00) \ 34 | | (ROL32(block->l[i],8) & 0x00FF00FF)) 35 | #else 36 | #define SHABLK0(i) (block->l[i]) 37 | #endif 38 | 39 | #define SHABLK(i) (block->l[i&15] = ROL32(block->l[(i+13)&15] ^ block->l[(i+8)&15] \ 40 | ^ block->l[(i+2)&15] ^ block->l[i&15],1)) 41 | 42 | #define R0(v,w,x,y,z,i) { z+=((w&(x^y))^y)+SHABLK0(i)+0x5A827999+ROL32(v,5); w=ROL32(w,30); } 43 | #define R1(v,w,x,y,z,i) { z+=((w&(x^y))^y)+SHABLK(i)+0x5A827999+ROL32(v,5); w=ROL32(w,30); } 44 | #define R2(v,w,x,y,z,i) { z+=(w^x^y)+SHABLK(i)+0x6ED9EBA1+ROL32(v,5); w=ROL32(w,30); } 45 | #define R3(v,w,x,y,z,i) { z+=(((w|x)&y)|(w&x))+SHABLK(i)+0x8F1BBCDC+ROL32(v,5); w=ROL32(w,30); } 46 | #define R4(v,w,x,y,z,i) { z+=(w^x^y)+SHABLK(i)+0xCA62C1D6+ROL32(v,5); w=ROL32(w,30); } 47 | 48 | typedef union { 49 | unsigned char c[64]; 50 | uint32_t l[16]; 51 | } SHA1_WORKSPACE_BLOCK; 52 | 53 | enum { REPORT_HEX = 0, REPORT_DIGIT = 1 }; 54 | 55 | CSHA1(); 56 | virtual ~CSHA1(); 57 | 58 | uint32_t m_state[5]; 59 | uint32_t m_count[2]; 60 | unsigned char m_buffer[64]; 61 | unsigned char m_digest[20]; 62 | 63 | void Reset(); 64 | 65 | void Update(unsigned char* data, unsigned int len); 66 | bool HashFile(char *szFileName); 67 | 68 | void Final(); 69 | void ReportHash(char *szReport, unsigned char uReportType = REPORT_HEX); 70 | void GetHash(unsigned char *uDest); 71 | 72 | private: 73 | void Transform(uint32_t state[5], unsigned char buffer[64]); 74 | }; 75 | 76 | #endif 77 | -------------------------------------------------------------------------------- /trunk/source/Algorithms/endianness.h: -------------------------------------------------------------------------------- 1 | #ifndef _ENDIANNESS_H_ 2 | #define _ENDIANNESS_H_ 3 | 4 | #if defined (_WIN32) 5 | #define LITTLE_ENDIAN 1234 6 | #define BYTE_ORDER LITTLE_ENDIAN 7 | #endif 8 | 9 | #endif 10 | -------------------------------------------------------------------------------- /trunk/source/Algorithms/sha256.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2001 Niels Moller 3 | * 4 | * The nettle library is free software; you can redistribute it and/or modify 5 | * it under the terms of the GNU Lesser General Public License as published by 6 | * the Free Software Foundation; either version 2.1 of the License, or (at your 7 | * option) any later version. 8 | * 9 | * The nettle library is distributed in the hope that it will be useful, but 10 | * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 11 | * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public 12 | * License for more details. 13 | * 14 | * You should have received a copy of the GNU Lesser General Public License 15 | * along with the nettle library; see the file COPYING.LIB. If not, write to 16 | * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, 17 | * MA 02111-1307, USA. 18 | */ 19 | 20 | #ifndef __SHA256_H 21 | #define __SHA256_H 22 | /* 23 | * Copyright (C) 2007-2008 Sourcefire, Inc. 24 | * 25 | * Authors: Tomasz Kojm 26 | * 27 | * This program is free software; you can redistribute it and/or modify 28 | * it under the terms of the GNU General Public License version 2 as 29 | * published by the Free Software Foundation. 30 | * 31 | * This program is distributed in the hope that it will be useful, 32 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 33 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 34 | * GNU General Public License for more details. 35 | * 36 | * You should have received a copy of the GNU General Public License 37 | * along with this program; if not, write to the Free Software 38 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, 39 | * MA 02110-1301, USA. 40 | */ 41 | #include 42 | #include 43 | 44 | #define SHA256_DIGEST_SIZE 32 45 | #define SHA256_DATA_SIZE 64 46 | 47 | /* Digest is kept internally as 8 32-bit words. */ 48 | #define _SHA256_DIGEST_LENGTH 8 49 | 50 | typedef struct sha256_ctx 51 | { 52 | uint32_t state[_SHA256_DIGEST_LENGTH]; /* State variables */ 53 | uint32_t count_low, count_high; /* 64-bit block count */ 54 | unsigned char block[SHA256_DATA_SIZE]; /* SHA256 data buffer */ 55 | uint32_t index; /* index into buffer */ 56 | } SHA256_CTX; 57 | 58 | void 59 | sha256_init(struct sha256_ctx *ctx); 60 | 61 | void 62 | sha256_update(struct sha256_ctx *ctx, const unsigned char *data, uint32_t length); 63 | 64 | void 65 | sha256_final(struct sha256_ctx *ctx); 66 | 67 | void 68 | sha256_digest(const struct sha256_ctx *ctx, unsigned char *digest); 69 | 70 | //#if defined (_WIN32) 71 | //void 72 | //sha256_digest(const struct sha256_ctx *ctx, CString* sDigest); 73 | //#endif 74 | 75 | void 76 | sha256_digest(const struct sha256_ctx *ctx, std::string* sDigest); 77 | 78 | #endif 79 | -------------------------------------------------------------------------------- /trunk/source/Common/Global.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/trunk/source/Common/Global.h -------------------------------------------------------------------------------- /trunk/source/Common/HashEngine.h: -------------------------------------------------------------------------------- 1 | #ifndef _HASH_ENGINE_H_ 2 | #define _HASH_ENGINE_H_ 3 | 4 | #include "Common/Global.h" 5 | 6 | #if defined (_WIN32) 7 | #include 8 | #endif 9 | 10 | int WINAPI HashThreadFunc(void *param); 11 | 12 | #endif 13 | -------------------------------------------------------------------------------- /trunk/source/Common/UIBridgeBase.h: -------------------------------------------------------------------------------- 1 | #ifndef _UI_BRIDGE_BASE_H_ 2 | #define _UI_BRIDGE_BASE_H_ 3 | 4 | #include "Common/Global.h" 5 | 6 | class UIBridgeBase 7 | { 8 | public: 9 | UIBridgeBase() {} 10 | virtual ~UIBridgeBase() {} 11 | 12 | virtual void lockData() = 0; 13 | virtual void unlockData() = 0; 14 | 15 | virtual void preparingCalc() = 0; 16 | virtual void removePreparingCalc() = 0; 17 | virtual void calcStop() = 0; 18 | virtual void calcFinish() = 0; 19 | 20 | virtual void showFileName(const ResultData& result) = 0; 21 | virtual void showFileMeta(const ResultData& result) = 0; 22 | virtual void showFileHash(const ResultData& result, bool uppercase) = 0; 23 | virtual void showFileErr(const ResultData& result) = 0; 24 | 25 | virtual int getProgMax() = 0; 26 | virtual void updateProg(int value) = 0; 27 | virtual void updateProgWhole(int value) = 0; 28 | 29 | virtual void fileCalcFinish() = 0; 30 | virtual void fileFinish() = 0; 31 | 32 | }; 33 | 34 | #endif 35 | -------------------------------------------------------------------------------- /trunk/source/Common/Utils.h: -------------------------------------------------------------------------------- 1 | #ifndef _UTILS_H_ 2 | #define _UTILS_H_ 3 | 4 | #include 5 | #include 6 | #include 7 | 8 | namespace Utils 9 | { 10 | uint64_t GetCurrentMilliSec(); 11 | 12 | std::string ConvertSizeToShortSizeStr(uint64_t size, bool conv1KSmaller = false); 13 | 14 | } 15 | 16 | #endif 17 | -------------------------------------------------------------------------------- /trunk/source/OSXUI/AboutViewController.swift: -------------------------------------------------------------------------------- 1 | // 2 | // AboutViewController.swift 3 | // fHash 4 | // 5 | // Created by Sun Junwen on 2023/12/5. 6 | // Copyright © 2023 Sun Junwen. All rights reserved. 7 | // 8 | 9 | import Cocoa 10 | 11 | @objc(AboutViewController) class AboutViewController: NSViewController { 12 | @IBOutlet weak var iconImageView: NSImageView! 13 | @IBOutlet weak var infoTextField: NSTextField! 14 | @IBOutlet weak var homePageLinkTextField: HyperlinkTextField! 15 | @IBOutlet weak var closeButton: NSButton! 16 | 17 | override func viewDidLoad() { 18 | super.viewDidLoad() 19 | 20 | // Do view setup here. 21 | iconImageView.image = NSApp.applicationIconImage 22 | 23 | let strAppVersion = Bundle.main.infoDictionary?["CFBundleShortVersionString"] as? String 24 | let strAppBundleVersion = Bundle.main.infoDictionary?["CFBundleVersion"] as? String 25 | 26 | var strAboutInfo = "" 27 | strAboutInfo += MacSwiftUtils.GetStringFromRes("ABOUTDLG_INFO_TITLE") 28 | strAboutInfo += " " 29 | strAboutInfo += (strAppVersion ?? "") 30 | strAboutInfo += " (" 31 | strAboutInfo += (strAppBundleVersion ?? "") 32 | strAboutInfo += ")" 33 | strAboutInfo += "\n" 34 | strAboutInfo += MacSwiftUtils.GetStringFromRes("ABOUTDLG_INFO_RIGHT") 35 | strAboutInfo += "\n" 36 | strAboutInfo += "\n" 37 | strAboutInfo += MacSwiftUtils.GetStringFromRes("ABOUTDLG_INFO_MD5") 38 | strAboutInfo += "\n" 39 | strAboutInfo += MacSwiftUtils.GetStringFromRes("ABOUTDLG_INFO_SHA256") 40 | strAboutInfo += "\n" 41 | strAboutInfo += MacSwiftUtils.GetStringFromRes("ABOUTDLG_INFO_SHA512") 42 | infoTextField.stringValue = strAboutInfo 43 | 44 | // Set homepage. 45 | var strLinkText = MacSwiftUtils.GetStringFromRes("ABOUTDLG_PROJECT_SITE") 46 | strLinkText = strLinkText.replacingOccurrences(of: "", with: "") 47 | strLinkText = strLinkText.replacingOccurrences(of:"", with: "") 48 | let url = URL(string: MacSwiftUtils.GetStringFromRes("ABOUTDLG_PROJECT_URL"))! 49 | let hyperlinkString = NSMutableAttributedString( 50 | string: strLinkText) 51 | hyperlinkString.beginEditing() 52 | hyperlinkString.addAttribute( 53 | .link, 54 | value: url, 55 | range: NSRange(location: 0, length: hyperlinkString.length)) 56 | hyperlinkString.endEditing() 57 | 58 | homePageLinkTextField.attributedStringValue = hyperlinkString 59 | 60 | closeButton.keyEquivalent = "\r" 61 | closeButton.title = MacSwiftUtils.GetStringFromRes("BUTTON_OK") 62 | } 63 | 64 | @IBAction func closeButtonClicked(_ sender: NSButton) { 65 | view.window?.close() 66 | } 67 | } 68 | 69 | -------------------------------------------------------------------------------- /trunk/source/OSXUI/AboutWindowController.swift: -------------------------------------------------------------------------------- 1 | // 2 | // AboutWindowController.swift 3 | // fHash 4 | // 5 | // Created by Sun Junwen on 2023/12/4. 6 | // Copyright © 2023 Sun Junwen. All rights reserved. 7 | // 8 | 9 | import Cocoa 10 | 11 | @objc(AboutWindowController) class AboutWindowController: NSWindowController { 12 | override func windowDidLoad() { 13 | super.windowDidLoad() 14 | 15 | // Implement this method to handle any initialization after your window controller's window has been loaded from its nib file. 16 | window?.title = MacSwiftUtils.GetStringFromRes("ABOUTDLG_TITLE") 17 | //window?.backgroundColor = .textBackgroundColor 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /trunk/source/OSXUI/Assets.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "fh-bigsur-64.png", 5 | "idiom" : "mac", 6 | "scale" : "1x", 7 | "size" : "16x16" 8 | }, 9 | { 10 | "filename" : "fh-bigsur-65.png", 11 | "idiom" : "mac", 12 | "scale" : "2x", 13 | "size" : "16x16" 14 | }, 15 | { 16 | "filename" : "fh-bigsur-66.png", 17 | "idiom" : "mac", 18 | "scale" : "1x", 19 | "size" : "32x32" 20 | }, 21 | { 22 | "filename" : "fh-bigsur-67.png", 23 | "idiom" : "mac", 24 | "scale" : "2x", 25 | "size" : "32x32" 26 | }, 27 | { 28 | "filename" : "fh-bigsur-128.png", 29 | "idiom" : "mac", 30 | "scale" : "1x", 31 | "size" : "128x128" 32 | }, 33 | { 34 | "filename" : "fh-bigsur-256.png", 35 | "idiom" : "mac", 36 | "scale" : "2x", 37 | "size" : "128x128" 38 | }, 39 | { 40 | "filename" : "fh-bigsur-257.png", 41 | "idiom" : "mac", 42 | "scale" : "1x", 43 | "size" : "256x256" 44 | }, 45 | { 46 | "filename" : "fh-bigsur-512.png", 47 | "idiom" : "mac", 48 | "scale" : "2x", 49 | "size" : "256x256" 50 | }, 51 | { 52 | "filename" : "fh-bigsur-513.png", 53 | "idiom" : "mac", 54 | "scale" : "1x", 55 | "size" : "512x512" 56 | }, 57 | { 58 | "filename" : "fh-bigsur-1024.png", 59 | "idiom" : "mac", 60 | "scale" : "2x", 61 | "size" : "512x512" 62 | } 63 | ], 64 | "info" : { 65 | "author" : "xcode", 66 | "version" : 1 67 | } 68 | } 69 | -------------------------------------------------------------------------------- /trunk/source/OSXUI/Assets.xcassets/AppIcon.appiconset/fh-bigsur-1024.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/trunk/source/OSXUI/Assets.xcassets/AppIcon.appiconset/fh-bigsur-1024.png -------------------------------------------------------------------------------- /trunk/source/OSXUI/Assets.xcassets/AppIcon.appiconset/fh-bigsur-128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/trunk/source/OSXUI/Assets.xcassets/AppIcon.appiconset/fh-bigsur-128.png -------------------------------------------------------------------------------- /trunk/source/OSXUI/Assets.xcassets/AppIcon.appiconset/fh-bigsur-256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/trunk/source/OSXUI/Assets.xcassets/AppIcon.appiconset/fh-bigsur-256.png -------------------------------------------------------------------------------- /trunk/source/OSXUI/Assets.xcassets/AppIcon.appiconset/fh-bigsur-257.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/trunk/source/OSXUI/Assets.xcassets/AppIcon.appiconset/fh-bigsur-257.png -------------------------------------------------------------------------------- /trunk/source/OSXUI/Assets.xcassets/AppIcon.appiconset/fh-bigsur-512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/trunk/source/OSXUI/Assets.xcassets/AppIcon.appiconset/fh-bigsur-512.png -------------------------------------------------------------------------------- /trunk/source/OSXUI/Assets.xcassets/AppIcon.appiconset/fh-bigsur-513.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/trunk/source/OSXUI/Assets.xcassets/AppIcon.appiconset/fh-bigsur-513.png -------------------------------------------------------------------------------- /trunk/source/OSXUI/Assets.xcassets/AppIcon.appiconset/fh-bigsur-64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/trunk/source/OSXUI/Assets.xcassets/AppIcon.appiconset/fh-bigsur-64.png -------------------------------------------------------------------------------- /trunk/source/OSXUI/Assets.xcassets/AppIcon.appiconset/fh-bigsur-65.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/trunk/source/OSXUI/Assets.xcassets/AppIcon.appiconset/fh-bigsur-65.png -------------------------------------------------------------------------------- /trunk/source/OSXUI/Assets.xcassets/AppIcon.appiconset/fh-bigsur-66.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/trunk/source/OSXUI/Assets.xcassets/AppIcon.appiconset/fh-bigsur-66.png -------------------------------------------------------------------------------- /trunk/source/OSXUI/Assets.xcassets/AppIcon.appiconset/fh-bigsur-67.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/trunk/source/OSXUI/Assets.xcassets/AppIcon.appiconset/fh-bigsur-67.png -------------------------------------------------------------------------------- /trunk/source/OSXUI/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | } 6 | } -------------------------------------------------------------------------------- /trunk/source/OSXUI/Base.lproj/Localizable.strings: -------------------------------------------------------------------------------- 1 | /* 2 | Localizable.strings 3 | fHashMacUI 4 | 5 | Created by Sun Junwen on 15/7/28. 6 | Copyright (c) 2015 Sun Junwen. All rights reserved. 7 | */ 8 | // Global Strings 9 | "FILE_STRING" = "File"; 10 | "BYTE_STRING" = "Byte(s)"; 11 | "HASHVALUE_STRING" = "Hash:"; 12 | "FILENAME_STRING" = "Name:"; 13 | "FILESIZE_STRING" = "File Size:"; 14 | "MODIFYTIME_STRING" = "Modified Date:"; 15 | "VERSION_STRING" = "Version:"; 16 | "SECOND_STRING" = "s"; 17 | "BUTTON_OK" = "OK"; 18 | "BUTTON_CANCEL" = "Cancel"; 19 | 20 | // Main Dialog Strings 21 | "MAINDLG_INITINFO" = "Drag files here or click open to start calculate..."; 22 | "MAINDLG_WAITING_START" = "Prepare to start calculation."; 23 | "MAINDLG_CONTEXT_INIT" = "Need Administrator"; 24 | "MAINDLG_ADD_SUCCEEDED" = "Add Succeeded"; 25 | "MAINDLG_ADD_FAILED" = "Add Failed"; 26 | "MAINDLG_REMOVE_SUCCEEDED" = "Remove Succeeded"; 27 | "MAINDLG_REMOVE_FAILED" = "Remove Failed"; 28 | "MAINDLG_REMOVE_CONTEXT_MENU" = "Remove Context Menu"; 29 | "MAINDLG_ADD_CONTEXT_MENU" = "Add to Context Menu"; 30 | "MAINDLG_CLEAR" = "Clea&r"; 31 | "MAINDLG_CLEAR_VERIFY" = "Clea&r Verify"; 32 | "MAINDLG_CALCU_TERMINAL" = "Terminated"; 33 | "MAINDLG_FIND_IN_RESULT" = "Verify"; 34 | "MAINDLG_RESULT" = "Result:"; 35 | "MAINDLG_NORESULT" = "Nothing found"; 36 | "MAINDLG_FILE_PROGRESS" = "File"; 37 | "MAINDLG_TOTAL_PROGRESS" = "Total"; 38 | "MAINDLG_UPPER_HASH" = "Uppercase"; 39 | "MAINDLG_TIME_TITLE" = "Time Used:"; 40 | "MAINDLG_OPEN" = "&Open..."; 41 | "MAINDLG_STOP" = "&Stop"; 42 | "MAINDLG_COPY" = "&Copy"; 43 | "MAINDLG_VERIFY" = "&Verify"; 44 | "MAINDLG_ABOUT" = "&About"; 45 | "MAINDLG_EXIT" = "E&xit"; 46 | "MAINDLG_HYPEREDIT_MENU_COPY" = "Copy hash value"; 47 | "MAINDLG_HYPEREDIT_MENU_SERACHGOOGLE" = "Search Google"; 48 | "MAINDLG_HYPEREDIT_MENU_SERACHVIRUSTOTAL" = "Search VirusTotal"; 49 | 50 | // Find Dialog Strings 51 | "FINDDLG_TITLE" = "Verify"; 52 | 53 | // About Dialog Strings 54 | "ABOUTDLG_TITLE" = "About fHash"; 55 | "ABOUTDLG_INFO_TITLE" = "fHash: Files Hash Calculator"; 56 | "ABOUTDLG_INFO_RIGHT" = "Copyright (C) 2007- SUN Junwen."; 57 | "ABOUTDLG_INFO_MD5" = "MD5 implementation copyright (C) RSA Data Security, Inc."; 58 | "ABOUTDLG_INFO_SHA256" = "SHA256 implementation copyright (C) Niels Moller"; 59 | "ABOUTDLG_INFO_SHA512" = "SHA512 implementation copyright (C) Aaron D. Gifford"; 60 | "ABOUTDLG_INFO_RIGHTDETAIL" = "More details are on Project Site."; 61 | "ABOUTDLG_INFO_OSTITLE" = "Operating System:"; 62 | "ABOUTDLG_PROJECT_SITE" = "Hosted on GitHub"; 63 | "ABOUTDLG_PROJECT_URL" = "https://github.com/sunjw/fhash"; 64 | 65 | // Shell ext 66 | "SHELL_EXT_TOO_MANY_FILES" = "Selected too many files"; 67 | -------------------------------------------------------------------------------- /trunk/source/OSXUI/Base.lproj/ServicesMenu.strings: -------------------------------------------------------------------------------- 1 | /* 2 | ServicesMenu.strings 3 | fHashMacUI 4 | 5 | Created by Sun Junwen on 15/7/28. 6 | Copyright (c) 2015 Sun Junwen. All rights reserved. 7 | */ 8 | "Hash with fHash" = "Hash with fHash"; 9 | -------------------------------------------------------------------------------- /trunk/source/OSXUI/HashBridge.h: -------------------------------------------------------------------------------- 1 | // 2 | // HashBridge.h 3 | // fHashMacUI 4 | // 5 | // Created by Sun Junwen on 2023/12/7. 6 | // Copyright © 2023 Sun Junwen. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @class MainViewController; 12 | 13 | @interface HashBridge : NSObject 14 | 15 | - (instancetype)initWithController:(MainViewController *)mainViewController; 16 | 17 | - (void)didLoad; 18 | - (void)clear; 19 | 20 | - (void)setStop:(bool)val; 21 | - (void)setUppercase:(bool)val; 22 | - (int)getProgMax; 23 | - (uint64_t)getTotalSize; 24 | 25 | - (void)addFiles:(NSArray *)fileNames isURL:(BOOL)isURL; 26 | - (NSArray *)getResults; 27 | 28 | - (void)startHashThread; 29 | 30 | @end 31 | -------------------------------------------------------------------------------- /trunk/source/OSXUI/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleDocumentTypes 8 | 9 | 10 | CFBundleTypeExtensions 11 | 12 | * 13 | 14 | CFBundleTypeName 15 | Files 16 | CFBundleTypeRole 17 | Viewer 18 | LSHandlerRank 19 | Default 20 | LSTypeIsPackage 21 | 1 22 | NSDocumentClass 23 | NSDocument 24 | 25 | 26 | CFBundleExecutable 27 | $(EXECUTABLE_NAME) 28 | CFBundleIconFile 29 | 30 | CFBundleIdentifier 31 | $(PRODUCT_BUNDLE_IDENTIFIER) 32 | CFBundleInfoDictionaryVersion 33 | 6.0 34 | CFBundleName 35 | $(PRODUCT_NAME) 36 | CFBundlePackageType 37 | APPL 38 | CFBundleShortVersionString 39 | 3.11.11 40 | CFBundleSignature 41 | ???? 42 | CFBundleVersion 43 | 105 44 | LSApplicationCategoryType 45 | public.app-category.utilities 46 | LSMinimumSystemVersion 47 | $(MACOSX_DEPLOYMENT_TARGET) 48 | NSHumanReadableCopyright 49 | Copyright © 2007- Sun Junwen. All rights reserved. 50 | NSMainStoryboardFile 51 | Main 52 | NSPrincipalClass 53 | NSApplication 54 | NSServices 55 | 56 | 57 | NSMenuItem 58 | 59 | default 60 | Hash with fHash 61 | 62 | NSMessage 63 | handleFinderContextOpen 64 | NSPortName 65 | fHash 66 | NSRequiredContext 67 | 68 | NSSendFileTypes 69 | 70 | NSFilenamesPboardType 71 | 72 | NSSendTypes 73 | 74 | NSFilenamesPboardType 75 | 76 | 77 | 78 | 79 | 80 | -------------------------------------------------------------------------------- /trunk/source/OSXUI/MacUtils.h: -------------------------------------------------------------------------------- 1 | // 2 | // MacUtils.h 3 | // fHashMacUI 4 | // 5 | // Created by Sun Junwen on 15/7/20. 6 | // Copyright (c) 2015 Sun Junwen. All rights reserved. 7 | // 8 | 9 | #ifndef _MAC_UTILS_H_ 10 | #define _MAC_UTILS_H_ 11 | 12 | #include 13 | #include "Common/strhelper.h" 14 | #include "Common/Global.h" 15 | 16 | #import 17 | 18 | namespace MacUtils { 19 | 20 | /** 21 | * An objc class ref <-> c pointer wrapper. 22 | * Like a weak pointer, not change reference count. 23 | */ 24 | template 25 | class ObjcWeakPtr { 26 | public: 27 | ObjcWeakPtr(NSTYPE *obj); 28 | 29 | void set(NSTYPE *obj); 30 | NSTYPE *get() const; 31 | 32 | private: 33 | void *_ptr; 34 | }; 35 | 36 | template 37 | ObjcWeakPtr::ObjcWeakPtr(NSTYPE *obj) { 38 | set(obj); 39 | } 40 | 41 | template 42 | void ObjcWeakPtr::set(NSTYPE *obj) { 43 | _ptr = (__bridge void *)obj; 44 | } 45 | 46 | template 47 | NSTYPE *ObjcWeakPtr::get() const { 48 | return (__bridge NSTYPE *)_ptr; 49 | } 50 | 51 | /** 52 | * Convert NSString to an UTF-8 std::string. 53 | */ 54 | std::string ConvertNSStringToUTF8String(const NSString *nsstr); 55 | 56 | /** 57 | * Convert an UTF-8 std::string to NSString. 58 | */ 59 | NSString *ConvertUTF8StringToNSString(const std::string& stdstrUtf8); 60 | 61 | } 62 | 63 | #endif 64 | -------------------------------------------------------------------------------- /trunk/source/OSXUI/MacUtils.mm: -------------------------------------------------------------------------------- 1 | // 2 | // MacUtils.mm 3 | // fHashMacUI 4 | // 5 | // Created by Sun Junwen on 15/7/20. 6 | // Copyright (c) 2015 Sun Junwen. All rights reserved. 7 | // 8 | #import "MacUtils.h" 9 | 10 | #include 11 | #include "Common/strhelper.h" 12 | #include "Common/Utils.h" 13 | #include "Common/Global.h" 14 | 15 | #import 16 | 17 | using namespace std; 18 | using namespace sunjwbase; 19 | 20 | namespace MacUtils { 21 | 22 | string ConvertNSStringToUTF8String(const NSString *nsstr) { 23 | string strRet = string([nsstr UTF8String]); 24 | return strRet; 25 | } 26 | 27 | NSString *ConvertUTF8StringToNSString(const string& stdstrUtf8) { 28 | return [NSString stringWithUTF8String:stdstrUtf8.c_str()]; 29 | } 30 | 31 | } 32 | -------------------------------------------------------------------------------- /trunk/source/OSXUI/MainView.swift: -------------------------------------------------------------------------------- 1 | // 2 | // MainView.swift 3 | // fHash 4 | // 5 | // Created by Sun Junwen on 2023/12/11. 6 | // Copyright © 2023 Sun Junwen. All rights reserved. 7 | // 8 | 9 | import Cocoa 10 | 11 | @objc(MainView) class MainView: NSView { 12 | weak var mainViewController: MainViewController? 13 | 14 | override func awakeFromNib() { 15 | MainActor.assumeIsolated { 16 | registerForDraggedTypes([.fileURL]) 17 | } 18 | } 19 | 20 | override func draggingEntered(_ sender: NSDraggingInfo) -> NSDragOperation { 21 | if mainViewController?.ableToCalcFiles() ?? false { 22 | return .copy 23 | } else { 24 | return [] 25 | } 26 | } 27 | 28 | override func performDragOperation(_ sender: NSDraggingInfo) -> Bool { 29 | mainViewController?.performViewDragOperation(sender) 30 | return true 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /trunk/source/OSXUI/MainWindowController.swift: -------------------------------------------------------------------------------- 1 | // 2 | // MainWindowController.swift 3 | // fHash 4 | // 5 | // Created by Sun Junwen on 2023/12/1. 6 | // Copyright © 2023 Sun Junwen. All rights reserved. 7 | // 8 | 9 | import Cocoa 10 | 11 | @objc(MainWindowController) class MainWindowController: NoTitlebarWindowController, NSWindowDelegate { 12 | override func windowDidLoad() { 13 | super.windowDidLoad() 14 | 15 | // Implement this method to handle any initialization after your window controller's window has been loaded from its nib file. 16 | window?.delegate = self 17 | 18 | self.windowFrameAutosaveName = "MainWindowFrame" 19 | } 20 | 21 | func getMainViewController() -> MainViewController? { 22 | var mainViewController: MainViewController? 23 | mainViewController = window?.contentViewController as? MainViewController 24 | return mainViewController 25 | } 26 | 27 | func windowShouldClose(_ sender: NSWindow) -> Bool { 28 | let mainViewController = getMainViewController() 29 | 30 | if mainViewController?.isCalculating() ?? false { 31 | mainViewController?.stopHashCalc(true) 32 | } 33 | 34 | return !(mainViewController?.isCalculating() ?? false) 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /trunk/source/OSXUI/NoTitlebarWindowController.swift: -------------------------------------------------------------------------------- 1 | // 2 | // NoTitlebarWindowController.swift 3 | // fHash 4 | // 5 | // Created by Sun Junwen on 2023/12/1. 6 | // Copyright © 2023 Sun Junwen. All rights reserved. 7 | // 8 | 9 | import Cocoa 10 | 11 | @objc(NoTitlebarWindowController) class NoTitlebarWindowController: NSWindowController { 12 | override func windowDidLoad() { 13 | super.windowDidLoad() 14 | 15 | // Implement this method to handle any initialization after your window controller's window has been loaded from its nib file. 16 | window?.titleVisibility = .hidden 17 | window?.titlebarAppearsTransparent = true 18 | window?.styleMask.insert(.fullSizeContentView) 19 | window?.isMovableByWindowBackground = true 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /trunk/source/OSXUI/PaddingClipView.swift: -------------------------------------------------------------------------------- 1 | // 2 | // PaddingClipView.swift 3 | // fHash 4 | // 5 | // Created by Sun Junwen on 2023/12/1. 6 | // Copyright © 2023 Sun Junwen. All rights reserved. 7 | // 8 | 9 | import Cocoa 10 | 11 | private let CLIPVIEW_PADDING_TOP = 22 12 | 13 | @objc(PaddingClipView) class PaddingClipView: NSClipView { 14 | override func setFrameOrigin(_ newOrigin: NSPoint) { 15 | super.setFrameOrigin(NSPoint(x: 0, y: CGFloat(CLIPVIEW_PADDING_TOP))) 16 | } 17 | 18 | override func setFrameSize(_ newSize: NSSize) { 19 | let sizeFixed = NSMakeSize(newSize.width, newSize.height - CGFloat(CLIPVIEW_PADDING_TOP)) 20 | super.setFrameSize(sizeFixed) 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /trunk/source/OSXUI/ResultDataSwift.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ResultDataSwift.swift 3 | // fHash 4 | // 5 | // Created by Sun Junwen on 2023/12/7. 6 | // Copyright © 2023 Sun Junwen. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | @objc(ResultDataSwift) class ResultDataSwift: NSObject { 12 | @objc static let RESULT_NONE = 0 13 | @objc static let RESULT_PATH = 1 14 | @objc static let RESULT_META = 2 15 | @objc static let RESULT_ALL = 3 16 | @objc static let RESULT_ERROR = 4 17 | 18 | @objc var state = RESULT_NONE // State 19 | @objc var strPath:String = "" // Path 20 | @objc var ulSize:UInt64 = 0 // Size 21 | @objc var strMDate:String = "" // Modified date 22 | @objc var strVersion:String = "" // Version 23 | @objc var strMD5:String = "" // MD5 24 | @objc var strSHA1:String = "" // SHA1 25 | @objc var strSHA256:String = "" // SHA256 26 | @objc var strSHA512:String = "" // SHA512 27 | @objc var strError:String = "" // Error string 28 | } 29 | -------------------------------------------------------------------------------- /trunk/source/OSXUI/UIBridgeMacSwift.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIBridgeMacSwift.h 3 | // fHashMacUI 4 | // 5 | // Created by Sun Junwen on 2023/12/7. 6 | // Copyright © 2023 Sun Junwen. All rights reserved. 7 | // 8 | 9 | #ifndef _UI_BRIDGE_MAC_SWIFT_ 10 | #define _UI_BRIDGE_MAC_SWIFT_ 11 | 12 | #include "OsUtils/OsThread.h" 13 | #include "Common/UIBridgeBase.h" 14 | 15 | #import "MacUtils.h" 16 | 17 | @class MainViewController; 18 | @class ResultDataSwift; 19 | 20 | class UIBridgeMacSwift: public UIBridgeBase 21 | { 22 | public: 23 | UIBridgeMacSwift(MainViewController *mainViewController); 24 | virtual ~UIBridgeMacSwift(); 25 | 26 | virtual void lockData(); 27 | virtual void unlockData(); 28 | 29 | virtual void preparingCalc(); 30 | virtual void removePreparingCalc(); 31 | virtual void calcStop(); 32 | virtual void calcFinish(); 33 | 34 | virtual void showFileName(const ResultData& result); 35 | virtual void showFileMeta(const ResultData& result); 36 | virtual void showFileHash(const ResultData& result, bool uppercase); 37 | virtual void showFileErr(const ResultData& result); 38 | 39 | virtual int getProgMax(); 40 | virtual void updateProg(int value); 41 | virtual void updateProgWhole(int value); 42 | 43 | virtual void fileCalcFinish(); 44 | virtual void fileFinish(); 45 | 46 | /** 47 | * Convert ResultData to ResultDataSwift 48 | */ 49 | static ResultDataSwift *ConvertResultDataToSwift(const ResultData& result); 50 | 51 | private: 52 | MacUtils::ObjcWeakPtr _mainViewControllerPtr; 53 | }; 54 | 55 | #endif 56 | 57 | -------------------------------------------------------------------------------- /trunk/source/OSXUI/en.lproj/Localizable.strings: -------------------------------------------------------------------------------- 1 | /* 2 | Localizable.strings 3 | fHashMacUI 4 | 5 | Created by Sun Junwen on 15/7/28. 6 | Copyright (c) 2015 Sun Junwen. All rights reserved. 7 | */ 8 | // Global Strings 9 | "FILE_STRING" = "File"; 10 | "BYTE_STRING" = "Byte(s)"; 11 | "HASHVALUE_STRING" = "Hash:"; 12 | "FILENAME_STRING" = "Name:"; 13 | "FILESIZE_STRING" = "File Size:"; 14 | "MODIFYTIME_STRING" = "Modified Date:"; 15 | "VERSION_STRING" = "Version:"; 16 | "SECOND_STRING" = "s"; 17 | "BUTTON_OK" = "OK"; 18 | "BUTTON_CANCEL" = "Cancel"; 19 | 20 | // Main Dialog Strings 21 | "MAINDLG_INITINFO" = "Drag files here or click open to start calculate..."; 22 | "MAINDLG_WAITING_START" = "Prepare to start calculation."; 23 | "MAINDLG_CONTEXT_INIT" = "Need Administrator"; 24 | "MAINDLG_ADD_SUCCEEDED" = "Add Succeeded"; 25 | "MAINDLG_ADD_FAILED" = "Add Failed"; 26 | "MAINDLG_REMOVE_SUCCEEDED" = "Remove Succeeded"; 27 | "MAINDLG_REMOVE_FAILED" = "Remove Failed"; 28 | "MAINDLG_REMOVE_CONTEXT_MENU" = "Remove Context Menu"; 29 | "MAINDLG_ADD_CONTEXT_MENU" = "Add to Context Menu"; 30 | "MAINDLG_CLEAR" = "Clea&r"; 31 | "MAINDLG_CLEAR_VERIFY" = "Clea&r Verify"; 32 | "MAINDLG_CALCU_TERMINAL" = "Terminated"; 33 | "MAINDLG_FIND_IN_RESULT" = "Verify"; 34 | "MAINDLG_RESULT" = "Result:"; 35 | "MAINDLG_NORESULT" = "Nothing found"; 36 | "MAINDLG_FILE_PROGRESS" = "File"; 37 | "MAINDLG_TOTAL_PROGRESS" = "Total"; 38 | "MAINDLG_UPPER_HASH" = "Uppercase"; 39 | "MAINDLG_TIME_TITLE" = "Time Used:"; 40 | "MAINDLG_OPEN" = "&Open..."; 41 | "MAINDLG_STOP" = "&Stop"; 42 | "MAINDLG_COPY" = "&Copy"; 43 | "MAINDLG_VERIFY" = "&Verify"; 44 | "MAINDLG_ABOUT" = "&About"; 45 | "MAINDLG_EXIT" = "E&xit"; 46 | "MAINDLG_HYPEREDIT_MENU_COPY" = "Copy hash value"; 47 | "MAINDLG_HYPEREDIT_MENU_SERACHGOOGLE" = "Search Google"; 48 | "MAINDLG_HYPEREDIT_MENU_SERACHVIRUSTOTAL" = "Search VirusTotal"; 49 | 50 | // Find Dialog Strings 51 | "FINDDLG_TITLE" = "Verify"; 52 | 53 | // About Dialog Strings 54 | "ABOUTDLG_TITLE" = "About fHash"; 55 | "ABOUTDLG_INFO_TITLE" = "fHash: Files Hash Calculator"; 56 | "ABOUTDLG_INFO_RIGHT" = "Copyright (C) 2007- SUN Junwen."; 57 | "ABOUTDLG_INFO_MD5" = "MD5 implementation copyright (C) RSA Data Security, Inc."; 58 | "ABOUTDLG_INFO_SHA256" = "SHA256 implementation copyright (C) Niels Moller"; 59 | "ABOUTDLG_INFO_SHA512" = "SHA512 implementation copyright (C) Aaron D. Gifford"; 60 | "ABOUTDLG_INFO_RIGHTDETAIL" = "More details are on Project Site."; 61 | "ABOUTDLG_INFO_OSTITLE" = "Operating System:"; 62 | "ABOUTDLG_PROJECT_SITE" = "Hosted on GitHub"; 63 | "ABOUTDLG_PROJECT_URL" = "https://github.com/sunjw/fhash"; 64 | 65 | // Shell ext 66 | "SHELL_EXT_TOO_MANY_FILES" = "Selected too many files"; 67 | -------------------------------------------------------------------------------- /trunk/source/OSXUI/en.lproj/ServicesMenu.strings: -------------------------------------------------------------------------------- 1 | /* 2 | ServicesMenu.strings 3 | fHashMacUI 4 | 5 | Created by Sun Junwen on 15/7/28. 6 | Copyright (c) 2015 Sun Junwen. All rights reserved. 7 | */ 8 | "Hash with fHash" = "Hash with fHash"; 9 | -------------------------------------------------------------------------------- /trunk/source/OSXUI/fHash-Bridging-Header.h: -------------------------------------------------------------------------------- 1 | // 2 | // Use this file to import your target's public headers that you would like to expose to Swift. 3 | // 4 | 5 | #import "HashBridge.h" 6 | -------------------------------------------------------------------------------- /trunk/source/OSXUI/fHash-Swift-Header.h: -------------------------------------------------------------------------------- 1 | #import 2 | #import 3 | 4 | #import "fHash-Swift.h" 5 | -------------------------------------------------------------------------------- /trunk/source/OSXUI/fHash.entitlements: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | com.apple.security.app-sandbox 6 | 7 | com.apple.security.files.user-selected.read-only 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /trunk/source/OSXUI/fHashMacAppDelegate.swift: -------------------------------------------------------------------------------- 1 | // 2 | // fHashMacAppDelegate.swift 3 | // fHash 4 | // 5 | // Created by Sun Junwen on 2023/12/11. 6 | // Copyright © 2023 Sun Junwen. All rights reserved. 7 | // 8 | 9 | import Cocoa 10 | 11 | @main 12 | @objc(fHashMacAppDelegate) class fHashMacAppDelegate: NSObject, NSApplicationDelegate { 13 | weak var mainViewController: MainViewController? 14 | 15 | func applicationDidFinishLaunching(_ aNotification: Notification) { 16 | // Insert code here to initialize your application 17 | 18 | NSApp.servicesProvider = self 19 | NSUpdateDynamicServices() 20 | } 21 | 22 | func applicationWillTerminate(_ aNotification: Notification) { 23 | // Insert code here to tear down your application 24 | } 25 | 26 | func applicationShouldTerminate(_ sender: NSApplication) -> NSApplication.TerminateReply { 27 | if mainViewController?.isCalculating() ?? false { 28 | mainViewController?.stopHashCalc(true) 29 | return .terminateCancel 30 | } else { 31 | return .terminateNow 32 | } 33 | } 34 | 35 | func applicationShouldTerminateAfterLastWindowClosed(_ sender: NSApplication) -> Bool { 36 | return true 37 | } 38 | 39 | func application(_ sender: NSApplication, openFiles filenames: [String]) { 40 | mainViewController?.startHashCalc(filenames, isURL: false) 41 | 42 | sender.reply(toOpenOrPrint: .success) 43 | } 44 | 45 | @MainActor @objc func handleFinderContextOpen(_ pboard: NSPasteboard, 46 | userData: String, 47 | error: NSErrorPointer){ 48 | if let fileNames = pboard.readObjects(forClasses: [NSURL.self], options: [:]) { 49 | mainViewController?.startHashCalc(fileNames, isURL: true) 50 | } 51 | } 52 | 53 | @IBAction func openDocument(_ sender: Any) { 54 | // Menu bar "open" 55 | mainViewController?.openFiles() 56 | } 57 | } 58 | -------------------------------------------------------------------------------- /trunk/source/OSXUI/icons/fh-bigsur-1024.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/trunk/source/OSXUI/icons/fh-bigsur-1024.png -------------------------------------------------------------------------------- /trunk/source/OSXUI/icons/fh-bigsur-1024.psd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/trunk/source/OSXUI/icons/fh-bigsur-1024.psd -------------------------------------------------------------------------------- /trunk/source/OSXUI/icons/fh-bigsur-128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/trunk/source/OSXUI/icons/fh-bigsur-128.png -------------------------------------------------------------------------------- /trunk/source/OSXUI/icons/fh-bigsur-128.psd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/trunk/source/OSXUI/icons/fh-bigsur-128.psd -------------------------------------------------------------------------------- /trunk/source/OSXUI/icons/fh-bigsur-256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/trunk/source/OSXUI/icons/fh-bigsur-256.png -------------------------------------------------------------------------------- /trunk/source/OSXUI/icons/fh-bigsur-256.psd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/trunk/source/OSXUI/icons/fh-bigsur-256.psd -------------------------------------------------------------------------------- /trunk/source/OSXUI/icons/fh-bigsur-512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/trunk/source/OSXUI/icons/fh-bigsur-512.png -------------------------------------------------------------------------------- /trunk/source/OSXUI/icons/fh-bigsur-512.psd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/trunk/source/OSXUI/icons/fh-bigsur-512.psd -------------------------------------------------------------------------------- /trunk/source/OSXUI/icons/fh-bigsur-64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/trunk/source/OSXUI/icons/fh-bigsur-64.png -------------------------------------------------------------------------------- /trunk/source/OSXUI/icons/fh-bigsur-64.psd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/trunk/source/OSXUI/icons/fh-bigsur-64.psd -------------------------------------------------------------------------------- /trunk/source/OSXUI/stdafx.h: -------------------------------------------------------------------------------- 1 | // An empty stdafx.h 2 | -------------------------------------------------------------------------------- /trunk/source/OSXUI/zh-Hans.lproj/Localizable.strings: -------------------------------------------------------------------------------- 1 | /* 2 | Localizable.strings 3 | fHashMacUI 4 | 5 | Created by Sun Junwen on 15/7/28. 6 | Copyright (c) 2015 Sun Junwen. All rights reserved. 7 | */ 8 | // Global Strings 9 | "FILE_STRING" = "文件"; 10 | "BYTE_STRING" = "字节"; 11 | "HASHVALUE_STRING" = "Hash 值:"; 12 | "FILENAME_STRING" = "文件名:"; 13 | "FILESIZE_STRING" = "文件大小:"; 14 | "MODIFYTIME_STRING" = "修改日期:"; 15 | "VERSION_STRING" = "版本:"; 16 | "SECOND_STRING" = "秒"; 17 | "BUTTON_OK" = "确定"; 18 | "BUTTON_CANCEL" = "取消"; 19 | 20 | // Main Dialog Strings 21 | "MAINDLG_INITINFO" = "将文件拖入或点击打开,开始计算..."; 22 | "MAINDLG_WAITING_START" = "准备开始计算。"; 23 | "MAINDLG_CONTEXT_INIT" = "需要管理员权限"; 24 | "MAINDLG_ADD_SUCCEEDED" = "添加成功"; 25 | "MAINDLG_ADD_FAILED" = "添加失败"; 26 | "MAINDLG_REMOVE_SUCCEEDED" = "移除成功"; 27 | "MAINDLG_REMOVE_FAILED" = "移除失败"; 28 | "MAINDLG_REMOVE_CONTEXT_MENU" = "移除右键菜单"; 29 | "MAINDLG_ADD_CONTEXT_MENU" = "添加右键菜单"; 30 | "MAINDLG_CLEAR" = "清除(&R)"; 31 | "MAINDLG_CLEAR_VERIFY" = "清除验证(&R)"; 32 | "MAINDLG_CALCU_TERMINAL" = "计算终止"; 33 | "MAINDLG_FIND_IN_RESULT" = "在结果中搜索"; 34 | "MAINDLG_RESULT" = "匹配的结果:"; 35 | "MAINDLG_NORESULT" = "无匹配结果"; 36 | "MAINDLG_FILE_PROGRESS" = "文件进度"; 37 | "MAINDLG_TOTAL_PROGRESS" = "总体进度"; 38 | "MAINDLG_UPPER_HASH" = "大写 Hash"; 39 | "MAINDLG_TIME_TITLE" = "计算时间:"; 40 | "MAINDLG_OPEN" = "打开(&O)..."; 41 | "MAINDLG_STOP" = "停止(&S)"; 42 | "MAINDLG_COPY" = "全部复制(&C)"; 43 | "MAINDLG_VERIFY" = "验证(&V)"; 44 | "MAINDLG_ABOUT" = "关于(&A)"; 45 | "MAINDLG_EXIT" = "退出(&X)"; 46 | "MAINDLG_HYPEREDIT_MENU_COPY" = "复制哈希值"; 47 | "MAINDLG_HYPEREDIT_MENU_SERACHGOOGLE" = "搜索 Google"; 48 | "MAINDLG_HYPEREDIT_MENU_SERACHVIRUSTOTAL" = "搜索 VirusTotal"; 49 | 50 | // Find Dialog Strings 51 | "FINDDLG_TITLE" = "验证"; 52 | 53 | // About Dialog Strings 54 | "ABOUTDLG_TITLE" = "关于 fHash"; 55 | "ABOUTDLG_INFO_TITLE" = "fHash: 文件 Hash 计算器"; 56 | "ABOUTDLG_INFO_RIGHT" = "Copyright (C) 2007- SUN Junwen."; 57 | "ABOUTDLG_INFO_MD5" = "MD5 实现 copyright (C) RSA Data Security, Inc."; 58 | "ABOUTDLG_INFO_SHA256" = "SHA256 实现 copyright (C) Niels Moller"; 59 | "ABOUTDLG_INFO_SHA512" = "SHA512 实现 copyright (C) Aaron D. Gifford"; 60 | "ABOUTDLG_INFO_RIGHTDETAIL" = "详细授权信息见开发者网站。"; 61 | "ABOUTDLG_INFO_OSTITLE" = "当前操作系统:"; 62 | "ABOUTDLG_PROJECT_SITE" = "Hosted on GitHub"; 63 | "ABOUTDLG_PROJECT_URL" = "https://github.com/sunjw/fhash"; 64 | 65 | // Shell ext 66 | "SHELL_EXT_TOO_MANY_FILES" = "选择的文件太多"; 67 | -------------------------------------------------------------------------------- /trunk/source/OSXUI/zh-Hans.lproj/ServicesMenu.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/trunk/source/OSXUI/zh-Hans.lproj/ServicesMenu.strings -------------------------------------------------------------------------------- /trunk/source/OsUtils/OsFile.h: -------------------------------------------------------------------------------- 1 | /* 2 | * OsFile header file 3 | * Author: Sun Junwen 4 | * Version: 0.5 5 | * Provider basic open/close, read, write and 6 | * attributes functions of file. 7 | */ 8 | #ifndef _OS_FILE_H_ 9 | #define _OS_FILE_H_ 10 | 11 | #include 12 | #include 13 | #include "Common/strhelper.h" 14 | 15 | namespace sunjwbase 16 | { 17 | class OsFile 18 | { 19 | public: 20 | static const uint32_t ERR_MSG_BUFFER_LEN = 1024; 21 | 22 | enum OsFileStatus 23 | { 24 | CLOSED = 0, OPEN_READ, OPEN_WRITE, OPEN_READWRITE 25 | }; 26 | 27 | enum OsFileSeekFrom 28 | { 29 | OF_SEEK_BEGIN = 0, OF_SEEK_CUR, OF_SEEK_END 30 | }; 31 | 32 | explicit OsFile(sunjwbase::tstring filePath); 33 | ~OsFile(); 34 | 35 | // Open 36 | bool openRead(void *exception = NULL); 37 | bool openReadScan(void *exception = NULL); 38 | bool openWrite(void *exception = NULL); 39 | bool openReadWrite(void *exception = NULL); 40 | 41 | // Attributes 42 | int64_t getLength(); 43 | bool getModifiedTime(void *modifiedTime); 44 | sunjwbase::tstring getModifiedTimeFormat(); 45 | 46 | // Operation 47 | uint64_t seek(uint64_t offset, OsFileSeekFrom from); 48 | int64_t read(void *readBuffer, uint32_t bytes); 49 | int64_t write(void *writeBuffer, uint32_t bytes); 50 | 51 | // Close 52 | void close(); 53 | 54 | private: 55 | bool open(void *flag, void *exception); 56 | 57 | sunjwbase::tstring _filePath; 58 | void *_osfileData; 59 | OsFileStatus _fileStatus; 60 | }; 61 | 62 | } 63 | 64 | #endif // _OS_FILE_H_ 65 | 66 | -------------------------------------------------------------------------------- /trunk/source/OsUtils/OsThread.h: -------------------------------------------------------------------------------- 1 | /* 2 | * OsThread header file 3 | * Author: Sun Junwen 4 | * Version: 0.5 5 | * Provider Mutex. 6 | */ 7 | #ifndef _OS_THREAD_H_ 8 | #define _OS_THREAD_H_ 9 | 10 | #include 11 | #include 12 | 13 | namespace sunjwbase 14 | { 15 | class OsMutex 16 | { 17 | public: 18 | explicit OsMutex(); 19 | ~OsMutex(); 20 | 21 | void lock(); 22 | void unlock(); 23 | 24 | private: 25 | void *_osMtxData; 26 | 27 | }; 28 | } 29 | 30 | 31 | #endif 32 | -------------------------------------------------------------------------------- /trunk/source/OsUtils/OsThreadPosixDarwin.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | * OsThread posix (darwin) implementation file 3 | * Author: Sun Junwen 4 | * Version: 0.5 5 | * Provider Mutex. 6 | */ 7 | #include "stdafx.h" 8 | 9 | #include "OsThread.h" 10 | 11 | #include 12 | #include 13 | #include 14 | 15 | using namespace sunjwbase; 16 | 17 | #define GET_PTMUTEX_FROM_POINTER(pointer) ((pthread_mutex_t *)(pointer)) 18 | 19 | OsMutex::OsMutex() 20 | { 21 | pthread_mutex_t *ptMutex = new pthread_mutex_t(); 22 | pthread_mutex_init(ptMutex, NULL); 23 | 24 | _osMtxData = (void *)ptMutex; 25 | } 26 | 27 | OsMutex::~OsMutex() 28 | { 29 | pthread_mutex_t *ptMutex = GET_PTMUTEX_FROM_POINTER(_osMtxData); 30 | pthread_mutex_destroy(ptMutex); 31 | 32 | delete ptMutex; 33 | } 34 | 35 | void OsMutex::lock() 36 | { 37 | pthread_mutex_t *ptMutex = GET_PTMUTEX_FROM_POINTER(_osMtxData); 38 | pthread_mutex_lock(ptMutex); 39 | } 40 | 41 | void OsMutex::unlock() 42 | { 43 | pthread_mutex_t *ptMutex = GET_PTMUTEX_FROM_POINTER(_osMtxData); 44 | pthread_mutex_unlock(ptMutex); 45 | } 46 | 47 | -------------------------------------------------------------------------------- /trunk/source/OsUtils/OsThreadWinApi.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | * OsThread Windows API implementation file 3 | * Author: Sun Junwen 4 | * Version: 0.5 5 | * Provider Mutex. 6 | */ 7 | #include "stdafx.h" 8 | 9 | #include "OsThread.h" 10 | 11 | #include 12 | #include 13 | 14 | #include 15 | 16 | using namespace sunjwbase; 17 | 18 | #define GET_CRITSEC_FROM_POINTER(pointer) ((CRITICAL_SECTION *)(pointer)) 19 | 20 | OsMutex::OsMutex() 21 | { 22 | CRITICAL_SECTION *critSec = new CRITICAL_SECTION(); 23 | InitializeCriticalSection(critSec); 24 | 25 | _osMtxData = (void *)critSec; 26 | } 27 | 28 | OsMutex::~OsMutex() 29 | { 30 | CRITICAL_SECTION *critSec = GET_CRITSEC_FROM_POINTER(_osMtxData); 31 | DeleteCriticalSection(critSec); 32 | 33 | delete critSec; 34 | } 35 | 36 | void OsMutex::lock() 37 | { 38 | CRITICAL_SECTION *critSec = GET_CRITSEC_FROM_POINTER(_osMtxData); 39 | EnterCriticalSection(critSec); 40 | } 41 | 42 | void OsMutex::unlock() 43 | { 44 | CRITICAL_SECTION *critSec = GET_CRITSEC_FROM_POINTER(_osMtxData); 45 | LeaveCriticalSection(critSec); 46 | } 47 | 48 | -------------------------------------------------------------------------------- /trunk/source/WinCommon/AdvTaskbar.cpp: -------------------------------------------------------------------------------- 1 | #include "stdafx.h" 2 | 3 | #include "AdvTaskbar.h" 4 | 5 | HRESULT WindowsComm::InitTaskbarList3(ITaskbarList3 **ppTaskbarList3) 6 | { 7 | HRESULT hr = CoCreateInstance( 8 | CLSID_TaskbarList, NULL, CLSCTX_ALL, 9 | IID_ITaskbarList3, (void **)ppTaskbarList3); 10 | if (FAILED(hr)) 11 | { 12 | *ppTaskbarList3 = NULL; 13 | } 14 | return hr; 15 | } 16 | 17 | HRESULT WindowsComm::SetTaskbarList3Value(ITaskbarList3 *pTaskbarList3, HWND hWnd, ULONGLONG ullValue) 18 | { 19 | if (pTaskbarList3 && hWnd) 20 | return pTaskbarList3->SetProgressValue(hWnd, ullValue, 99); 21 | return E_FAIL; 22 | } 23 | -------------------------------------------------------------------------------- /trunk/source/WinCommon/AdvTaskbar.h: -------------------------------------------------------------------------------- 1 | #ifndef _ADV_TASKBAR_H_ 2 | #define _ADV_TASKBAR_H_ 3 | 4 | #include 5 | #include 6 | 7 | namespace WindowsComm 8 | { 9 | HRESULT InitTaskbarList3(ITaskbarList3 **ppTaskbarList3); 10 | HRESULT SetTaskbarList3Value(ITaskbarList3 *pTaskbarList3, HWND hWnd, ULONGLONG ullValue); 11 | } 12 | 13 | #endif 14 | -------------------------------------------------------------------------------- /trunk/source/WinCommon/ClipboardHelper.cpp: -------------------------------------------------------------------------------- 1 | #include "stdafx.h" 2 | 3 | #include "ClipboardHelper.h" 4 | 5 | using namespace std; 6 | using namespace sunjwbase; 7 | 8 | BOOL WindowsComm::SetClipboardText(const sunjwbase::tstring tstrCopyText) 9 | { 10 | if (tstrCopyText.empty()) 11 | return FALSE; 12 | 13 | if (!OpenClipboard(NULL)) 14 | return FALSE; 15 | 16 | EmptyClipboard(); 17 | 18 | HGLOBAL hClipboardMem = GlobalAlloc(GMEM_MOVEABLE, (tstrCopyText.length() + 1) * sizeof(TCHAR)); 19 | if (hClipboardMem == NULL) 20 | { 21 | CloseClipboard(); 22 | return FALSE; 23 | } 24 | 25 | LPTSTR ptstrData = static_cast(GlobalLock(hClipboardMem)); 26 | if (ptstrData == NULL) 27 | { 28 | GlobalFree(hClipboardMem); 29 | CloseClipboard(); 30 | return FALSE; 31 | } 32 | 33 | memcpy(ptstrData, tstrCopyText.c_str(), (tstrCopyText.length() + 1) * sizeof(TCHAR)); 34 | GlobalUnlock(hClipboardMem); 35 | 36 | if (SetClipboardData(CF_UNICODETEXT, hClipboardMem) == NULL) 37 | { 38 | GlobalFree(hClipboardMem); 39 | CloseClipboard(); 40 | return FALSE; 41 | } 42 | 43 | CloseClipboard(); 44 | 45 | return TRUE; 46 | } 47 | -------------------------------------------------------------------------------- /trunk/source/WinCommon/ClipboardHelper.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | #include "Common/strhelper.h" 5 | 6 | namespace WindowsComm 7 | { 8 | BOOL SetClipboardText(const sunjwbase::tstring tstrCopyText); 9 | } 10 | -------------------------------------------------------------------------------- /trunk/source/WinCommon/FileVersionHelper.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/trunk/source/WinCommon/FileVersionHelper.cpp -------------------------------------------------------------------------------- /trunk/source/WinCommon/FileVersionHelper.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | 5 | #include "OsUtils/OsFile.h" 6 | #include "Common/strhelper.h" 7 | 8 | typedef const BYTE* LPCBYTE; 9 | 10 | namespace WindowsComm 11 | { 12 | class FileVersionHelper 13 | { 14 | public: 15 | FileVersionHelper(sunjwbase::OsFile& osFile); 16 | virtual ~FileVersionHelper(); 17 | 18 | sunjwbase::tstring Find(); 19 | 20 | private: 21 | void Seek(LPCBYTE pointer); 22 | 23 | BYTE ReadBYTE(LPCBYTE pointer); 24 | WORD ReadWORD(LPCBYTE pointer); 25 | DWORD ReadDWORD(LPCBYTE pointer); 26 | void ReadSize(LPCBYTE pointer, DWORD size, LPBYTE buf); 27 | 28 | LPCBYTE FindVersion(); 29 | int FindVsFixedFileInfo(LPCBYTE version, int offs, LPVOID fixedFileInfo); 30 | 31 | sunjwbase::OsFile& m_osFile; 32 | }; 33 | } 34 | -------------------------------------------------------------------------------- /trunk/source/WinCommon/WindowsComm.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/trunk/source/WinCommon/WindowsComm.cpp -------------------------------------------------------------------------------- /trunk/source/WinCommon/WindowsComm.h: -------------------------------------------------------------------------------- 1 | #ifndef _WINDOWS_COMM_H_ 2 | #define _WINDOWS_COMM_H_ 3 | 4 | #include 5 | #include 6 | #include 7 | 8 | #include "Common/strhelper.h" 9 | 10 | namespace WindowsComm 11 | { 12 | sunjwbase::tstring GetExeFileVersion(TCHAR* path); 13 | 14 | BOOL GetWindowsVersion(OSVERSIONINFOEX& osvi, BOOL& bOsVersionInfoEx); 15 | sunjwbase::tstring GetWindowsInfo(); 16 | } 17 | 18 | #endif 19 | -------------------------------------------------------------------------------- /trunk/source/WinCommon/WindowsStrings.cpp: -------------------------------------------------------------------------------- 1 | #include "stdafx.h" 2 | 3 | #include "WindowsStrings.h" 4 | 5 | #include 6 | #include 7 | #include 8 | #include "OsUtils/OsThread.h" 9 | #include "Common/strhelper.h" 10 | #include "WindowsStringsInternal.h" 11 | 12 | using namespace std; 13 | using namespace sunjwbase; 14 | 15 | namespace WindowsStrings 16 | { 17 | static OsMutex s_initMtx; 18 | static int s_init = 0; 19 | static shared_ptr s_winStrsMgr; 20 | static LANGID s_uiLang = -1; 21 | 22 | static void InitStringsManager() 23 | { 24 | s_initMtx.lock(); 25 | 26 | s_winStrsMgr.reset(WindowsStringsMgr::getInstance()); 27 | s_uiLang = GetUserDefaultUILanguage(); 28 | 29 | s_init = 1; 30 | s_initMtx.unlock(); 31 | } 32 | 33 | int RegisterStringsForLang(LANGID langId, WindowsStringsMap *stringsMap) 34 | { 35 | if (s_init == 0) 36 | InitStringsManager(); 37 | 38 | return s_winStrsMgr->registerStringsForLang(langId, stringsMap); 39 | } 40 | 41 | LANGID GetCurrentUILang() 42 | { 43 | if (s_init == 0) 44 | InitStringsManager(); 45 | 46 | return s_uiLang; 47 | } 48 | 49 | const TCHAR *GetStringByStringKey(const TCHAR *tzhKey) 50 | { 51 | if (s_init == 0) 52 | InitStringsManager(); 53 | 54 | return s_winStrsMgr->getStringForLang(s_uiLang, tzhKey); 55 | } 56 | } 57 | -------------------------------------------------------------------------------- /trunk/source/WinCommon/WindowsStrings.h: -------------------------------------------------------------------------------- 1 | #ifndef _WINDOWS_STRINGS_H_ 2 | #define _WINDOWS_STRINGS_H_ 3 | 4 | #include 5 | #include 6 | #include 7 | #include "Common/strhelper.h" 8 | 9 | #define GetStringByKey(key) WindowsStrings::GetStringByStringKey(_T( #key )) 10 | 11 | namespace WindowsStrings 12 | { 13 | typedef std::map StringMap; 14 | 15 | class WindowsStringsMap 16 | { 17 | public: 18 | WindowsStringsMap() {} 19 | virtual ~WindowsStringsMap() {} 20 | 21 | const TCHAR *getStringByKey(const TCHAR *tzhKey); 22 | 23 | protected: 24 | StringMap m_stringsMap; 25 | }; 26 | 27 | int RegisterStringsForLang(LANGID langId, WindowsStringsMap *stringsMap); 28 | 29 | LANGID GetCurrentUILang(); 30 | 31 | const TCHAR *GetStringByStringKey(const TCHAR *tzhKey); 32 | } 33 | 34 | #endif 35 | -------------------------------------------------------------------------------- /trunk/source/WinCommon/WindowsStringsInternal.cpp: -------------------------------------------------------------------------------- 1 | #include "stdafx.h" 2 | 3 | #include "WindowsStringsInternal.h" 4 | 5 | #include "OsUtils/OsThread.h" 6 | 7 | using namespace sunjwbase; 8 | 9 | namespace WindowsStrings 10 | { 11 | const TCHAR *WindowsStringsMap::getStringByKey(const TCHAR *tzhKey) 12 | { 13 | StringMap::iterator itr = m_stringsMap.find(tstring(tzhKey)); 14 | if (itr == m_stringsMap.end()) 15 | return NULL; 16 | 17 | return itr->second.c_str(); 18 | } 19 | 20 | OsMutex WindowsStringsMgr::s_instMtx; 21 | WindowsStringsMgr *WindowsStringsMgr::s_winStrsMgrInst = NULL; 22 | 23 | WindowsStringsMgr::WindowsStringsMgr() 24 | { 25 | } 26 | 27 | WindowsStringsMgr::~WindowsStringsMgr() 28 | { 29 | LangStringsMap::iterator itr = m_langStrsMap.begin(); 30 | for (; itr != m_langStrsMap.end(); ++itr) 31 | { 32 | WindowsStringsMap *ptr = itr->second; 33 | delete ptr; 34 | itr->second = NULL; 35 | } 36 | } 37 | 38 | WindowsStringsMgr *WindowsStringsMgr::getInstance(void) 39 | { 40 | s_instMtx.lock(); 41 | if (s_winStrsMgrInst == NULL) 42 | { 43 | s_winStrsMgrInst = new WindowsStringsMgr(); 44 | } 45 | s_instMtx.unlock(); 46 | 47 | return s_winStrsMgrInst; 48 | } 49 | 50 | int WindowsStringsMgr::registerStringsForLang(LANGID langId, WindowsStringsMap *stringsMap) 51 | { 52 | m_langStrsMap[langId] = stringsMap; 53 | 54 | return 0; 55 | } 56 | 57 | void WindowsStringsMgr::resetInstance(void) 58 | { 59 | s_instMtx.lock(); 60 | if (s_winStrsMgrInst != NULL) 61 | { 62 | delete s_winStrsMgrInst; 63 | s_winStrsMgrInst = NULL; 64 | } 65 | s_instMtx.unlock(); 66 | } 67 | 68 | const TCHAR *WindowsStringsMgr::getStringForLang(LANGID langId, const TCHAR *tzhKey) 69 | { 70 | const TCHAR *tzhRet = NULL; 71 | 72 | // Find string in lang id. 73 | LangStringsMap::iterator itrLang = m_langStrsMap.find(langId); 74 | if (itrLang != m_langStrsMap.end()) 75 | { 76 | WindowsStringsMap *langStringsMap = itrLang->second; 77 | tzhRet = langStringsMap->getStringByKey(tzhKey); 78 | } 79 | 80 | // Find string in base. 81 | itrLang = m_langStrsMap.find(-1); 82 | if (tzhRet == NULL && itrLang != m_langStrsMap.end()) 83 | { 84 | WindowsStringsMap *baseStringsMap = itrLang->second; 85 | tzhRet = baseStringsMap->getStringByKey(tzhKey); 86 | } 87 | 88 | if (tzhRet == NULL) 89 | { 90 | tzhRet = tzhKey; 91 | } 92 | 93 | return tzhRet; 94 | } 95 | 96 | } 97 | -------------------------------------------------------------------------------- /trunk/source/WinCommon/WindowsStringsInternal.h: -------------------------------------------------------------------------------- 1 | #ifndef _WINDOWS_STRINGS_INTERNAL_H_ 2 | #define _WINDOWS_STRINGS_INTERNAL_H_ 3 | 4 | #include 5 | #include 6 | #include 7 | #include "OsUtils/OsThread.h" 8 | #include "WindowsStrings.h" 9 | 10 | namespace WindowsStrings 11 | { 12 | typedef std::map LangStringsMap; 13 | 14 | class WindowsStringsMgr 15 | { 16 | public: 17 | virtual ~WindowsStringsMgr(); 18 | 19 | static WindowsStringsMgr *getInstance(void); 20 | static void resetInstance(void); 21 | 22 | int registerStringsForLang(LANGID langId, WindowsStringsMap *stringsMap); 23 | 24 | const TCHAR *getStringForLang(LANGID langId, const TCHAR *tzhKey); 25 | 26 | private: 27 | WindowsStringsMgr(); 28 | WindowsStringsMgr(const WindowsStringsMgr& other) {} 29 | 30 | static sunjwbase::OsMutex s_instMtx; 31 | static WindowsStringsMgr *s_winStrsMgrInst; 32 | 33 | LangStringsMap m_langStrsMap; 34 | }; 35 | } 36 | 37 | #endif -------------------------------------------------------------------------------- /trunk/source/WinMFC/AboutDlg.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/trunk/source/WinMFC/AboutDlg.cpp -------------------------------------------------------------------------------- /trunk/source/WinMFC/AboutDlg.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/trunk/source/WinMFC/AboutDlg.h -------------------------------------------------------------------------------- /trunk/source/WinMFC/FilesHash.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/trunk/source/WinMFC/FilesHash.cpp -------------------------------------------------------------------------------- /trunk/source/WinMFC/FilesHash.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/trunk/source/WinMFC/FilesHash.h -------------------------------------------------------------------------------- /trunk/source/WinMFC/FilesHashDlg.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/trunk/source/WinMFC/FilesHashDlg.cpp -------------------------------------------------------------------------------- /trunk/source/WinMFC/FilesHashDlg.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/trunk/source/WinMFC/FilesHashDlg.h -------------------------------------------------------------------------------- /trunk/source/WinMFC/FindDlg.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/trunk/source/WinMFC/FindDlg.cpp -------------------------------------------------------------------------------- /trunk/source/WinMFC/FindDlg.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/trunk/source/WinMFC/FindDlg.h -------------------------------------------------------------------------------- /trunk/source/WinMFC/HyperEditHash.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/trunk/source/WinMFC/HyperEditHash.cpp -------------------------------------------------------------------------------- /trunk/source/WinMFC/HyperEditHash.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "HyperEdit.h" 4 | 5 | // CHyperEditHash 6 | #define CHyperEditHash_BASE_CLASS CHyperEdit 7 | 8 | class CHyperEditHash : public CHyperEditHash_BASE_CLASS 9 | { 10 | DECLARE_DYNAMIC(CHyperEditHash) 11 | 12 | public: 13 | CHyperEditHash(); 14 | virtual ~CHyperEditHash(); 15 | 16 | void ClearTextBuffer(); 17 | CString GetTextBuffer() const; 18 | 19 | inline void ShowTextBuffer() 20 | { ShowTextBufferEx(FALSE); } 21 | void ShowTextBufferScrollEnd() 22 | { ShowTextBufferEx(TRUE); } 23 | 24 | void AppendTextToBuffer(LPCTSTR pszText); 25 | void AppendLinkToBuffer(LPCTSTR pszText); 26 | 27 | void CopyLinkOffsets(OFFSETS& linkOffsets); 28 | void SetLinkOffsets(const OFFSETS& linkOffsets); 29 | 30 | inline CString GetLastHyperlink() const 31 | { return m_cstrLastHyperlink; } 32 | 33 | inline CPoint GetLastScreenPoint() const 34 | { return m_cpLastScreenPoint; } 35 | 36 | void LineScrollEnd(); 37 | 38 | protected: 39 | DECLARE_MESSAGE_MAP() 40 | 41 | BOOL PreTranslateMessage(MSG* pMsg); 42 | 43 | virtual inline void EnableRedraw(BOOL bEnable) 44 | { SendMessage(WM_SETREDRAW, bEnable, 0); } 45 | 46 | virtual void ShowTextBufferEx(BOOL bScrollToEnd); 47 | 48 | virtual void BuildOffsetList(int iCharStart, int iCharFinish); 49 | 50 | virtual HINSTANCE OpenHyperlink(const CString& hyperlink, CPoint point); 51 | 52 | private: 53 | CString m_cstrTextBuffer; 54 | 55 | CRITICAL_SECTION m_csLinkOffsets; 56 | OFFSETS m_bufferLinkOffsets; 57 | 58 | CString m_cstrLastHyperlink; 59 | CPoint m_cpLastScreenPoint; 60 | 61 | }; 62 | 63 | 64 | -------------------------------------------------------------------------------- /trunk/source/WinMFC/ShellExtComm.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/trunk/source/WinMFC/ShellExtComm.cpp -------------------------------------------------------------------------------- /trunk/source/WinMFC/ShellExtComm.h: -------------------------------------------------------------------------------- 1 | #ifndef _SHELL_EXT_COMM_H_ 2 | #define _SHELL_EXT_COMM_H_ 3 | 4 | extern const TCHAR *SHELL_EXT_UUID; 5 | extern const TCHAR *SHELL_EXT_REGESTRY; 6 | extern const TCHAR *SHELL_EXT_EXEPATH; 7 | 8 | extern const TCHAR *CONTEXT_MENU_ITEM_EN_US; 9 | extern const TCHAR *CONTEXT_MENU_ITEM_ZH_CN; 10 | extern const TCHAR *CONTEXT_MENU_REGESTRY_ZH_CN; 11 | extern const TCHAR *CONTEXT_MENU_REGESTRY_EN_US; 12 | 13 | #endif 14 | -------------------------------------------------------------------------------- /trunk/source/WinMFC/UIBridgeMFC.h: -------------------------------------------------------------------------------- 1 | #ifndef _UI_BRIDGE_MFC_ 2 | #define _UI_BRIDGE_MFC_ 3 | 4 | #include "Common/UIBridgeBase.h" 5 | 6 | #include 7 | 8 | #include "Common/strhelper.h" 9 | #include "OsUtils/OsThread.h" 10 | #include "Common/Global.h" 11 | #include "HyperEditHash.h" 12 | 13 | class UIBridgeMFC: public UIBridgeBase 14 | { 15 | public: 16 | UIBridgeMFC(HWND hWnd, 17 | sunjwbase::OsMutex *mainMtx, 18 | CHyperEditHash *hyperEdit); 19 | virtual ~UIBridgeMFC(); 20 | 21 | virtual void lockData(); 22 | virtual void unlockData(); 23 | 24 | virtual void preparingCalc(); 25 | virtual void removePreparingCalc(); 26 | virtual void calcStop(); 27 | virtual void calcFinish(); 28 | 29 | virtual void showFileName(const ResultData& result); 30 | virtual void showFileMeta(const ResultData& result); 31 | virtual void showFileHash(const ResultData& result, bool uppercase); 32 | virtual void showFileErr(const ResultData& result); 33 | 34 | virtual int getProgMax(); 35 | virtual void updateProg(int value); 36 | virtual void updateProgWhole(int value); 37 | 38 | virtual void fileCalcFinish(); 39 | virtual void fileFinish(); 40 | 41 | static void AppendFileNameToHyperEdit(const ResultData& result, 42 | CHyperEditHash *hyerEdit); 43 | static void AppendFileMetaToHyperEdit(const ResultData& result, 44 | CHyperEditHash *hyerEdit); 45 | static void AppendFileHashToHyperEdit(const ResultData& result, 46 | bool uppercase, 47 | CHyperEditHash *hyerEdit); 48 | static void AppendFileErrToHyperEdit(const ResultData& result, 49 | CHyperEditHash *hyerEdit); 50 | static void AppendResultToHyperEdit(const ResultData& result, 51 | bool uppercase, 52 | CHyperEditHash *hyerEdit); 53 | 54 | private: 55 | HWND m_hWnd; 56 | sunjwbase::OsMutex *m_mainMtx; 57 | CHyperEditHash *m_mainHyperEdit; 58 | 59 | OFFSETS m_offsetsNoPreparing; 60 | sunjwbase::tstring m_tstrNoPreparing; 61 | }; 62 | 63 | #endif 64 | -------------------------------------------------------------------------------- /trunk/source/WinMFC/UIStringsBase.h: -------------------------------------------------------------------------------- 1 | #ifndef _UI_STRINGS_BASE_H_ 2 | #define _UI_STRINGS_BASE_H_ 3 | 4 | #include "WinCommon/WindowsStrings.h" 5 | 6 | class UIStringsBase: public WindowsStrings::WindowsStringsMap 7 | { 8 | public: 9 | UIStringsBase(); 10 | }; 11 | 12 | #endif 13 | -------------------------------------------------------------------------------- /trunk/source/WinMFC/UIStringsZHCN.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/trunk/source/WinMFC/UIStringsZHCN.cpp -------------------------------------------------------------------------------- /trunk/source/WinMFC/UIStringsZHCN.h: -------------------------------------------------------------------------------- 1 | #ifndef _UI_STRINGS_ZHCH_H_ 2 | #define _UI_STRINGS_ZHCN_H_ 3 | 4 | #include "WinCommon/WindowsStrings.h" 5 | 6 | class UIStringsZHCN: public WindowsStrings::WindowsStringsMap 7 | { 8 | public: 9 | UIStringsZHCN(); 10 | }; 11 | 12 | #endif 13 | -------------------------------------------------------------------------------- /trunk/source/WinMFC/WindowsUtils.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/trunk/source/WinMFC/WindowsUtils.cpp -------------------------------------------------------------------------------- /trunk/source/WinMFC/WindowsUtils.h: -------------------------------------------------------------------------------- 1 | #ifndef _WINDOWS_UTILS_H_ 2 | #define _WINDOWS_UTILS_H_ 3 | 4 | #include 5 | #include 6 | #include 7 | #include 8 | 9 | #include "Common/strhelper.h" 10 | #include "Common/Global.h" 11 | 12 | namespace WindowsUtils 13 | { 14 | inline sunjwbase::tstring cstrtotstr(const CString& cstring) 15 | { 16 | return sunjwbase::tstring(cstring.GetString()); 17 | } 18 | 19 | inline CString tstrtocstr(const sunjwbase::tstring& tstr) 20 | { 21 | CString temp; 22 | temp.SetString(tstr.c_str()); 23 | return temp; 24 | } 25 | 26 | BOOL IsWindows64(); 27 | BOOL IsLimitedProc(); 28 | BOOL ElevateProcess(); 29 | 30 | void CopyCString(const CString& cstrToCopy); 31 | 32 | HINSTANCE OpenURL(const TCHAR *pszURL); 33 | 34 | bool FindShlExtDll(TCHAR *pszExeFullPath, TCHAR *pszShlDllPath); 35 | 36 | bool RegShellExt(TCHAR *pszShlDllPath); 37 | bool UnregShellExt(TCHAR *pszShlDllPath); 38 | 39 | bool AddContextMenu(TCHAR *pszExeFullPath); 40 | bool AddShellExt(TCHAR *pszExeFullPath); 41 | 42 | bool AddContextMenu(); 43 | bool RemoveContextMenu(); 44 | bool ContextMenuExisted(); 45 | 46 | } 47 | 48 | #endif 49 | -------------------------------------------------------------------------------- /trunk/source/WinMFC/fileshash.rc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/trunk/source/WinMFC/fileshash.rc -------------------------------------------------------------------------------- /trunk/source/WinMFC/res/compatibility.manifest: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | true 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /trunk/source/WinMFC/res/fileshash.rc2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/trunk/source/WinMFC/res/fileshash.rc2 -------------------------------------------------------------------------------- /trunk/source/WinMFC/res/fm.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/trunk/source/WinMFC/res/fm.ico -------------------------------------------------------------------------------- /trunk/source/WinMFC/res/icon.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/trunk/source/WinMFC/res/icon.bmp -------------------------------------------------------------------------------- /trunk/source/WinMFC/res/icon.psd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/trunk/source/WinMFC/res/icon.psd -------------------------------------------------------------------------------- /trunk/source/WinMFC/res/icon1.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/trunk/source/WinMFC/res/icon1.ico -------------------------------------------------------------------------------- /trunk/source/WinMFC/res/md5sum.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunjw/fhash/6ac14ea0fe35f731176a265ddb9b19937bf7f393/trunk/source/WinMFC/res/md5sum.ico -------------------------------------------------------------------------------- /trunk/source/WinMFC/resource.h: -------------------------------------------------------------------------------- 1 | //{{NO_DEPENDENCIES}} 2 | // Microsoft Visual C++ generated include file. 3 | // Used by fileshash.rc 4 | // 5 | #define IDD_MAIN_DIALOG 102 6 | #define IDD_ABOUT 103 7 | #define IDI_ICON1 129 8 | #define IDR_241 133 9 | #define IDD_FIND_DIALOG 134 10 | #define IDR_MENU_HYPEREDIT 135 11 | #define IDE_TXTMAIN 1000 12 | #define IDC_STOP 1002 13 | #define IDC_OPEN 1003 14 | #define IDC_EXIT 1004 15 | #define IDC_ABOUT 1005 16 | #define IDC_PROGRESS 1006 17 | #define IDC_MAIN 1008 18 | #define IDC_ICON2 1012 19 | #define IDC_PROG_WHOLE 1014 20 | #define IDC_STATIC_FILE 1015 21 | #define IDC_STATIC_WHOLE 1016 22 | #define IDC_STATIC_FILE2 1016 23 | #define IDC_STATIC_HASH 1016 24 | #define IDC_CLEAN 1017 25 | #define IDC_COPY 1018 26 | #define IDC_CHECKUP 1019 27 | #define IDC_STATIC_TIME 1020 28 | #define IDC_STATIC_STR1 1021 29 | #define IDC_STATIC_TIMETITLE 1021 30 | #define IDC_STATIC_SPEED 1022 31 | #define IDC_ADDReg 1023 32 | #define IDC_STATIC_WHOLE2 1023 33 | #define IDC_STATIC_UPPER 1023 34 | #define IDC_STATIC_ADDRESULT 1024 35 | #define IDC_STATIC_ADDRESULT2 1025 36 | #define IDC_FIND 1025 37 | #define IDC_EDIT_FILE 1026 38 | #define IDC_EDIT2 1027 39 | #define IDC_EDIT_HASH 1027 40 | #define IDC_BUTTON1 1028 41 | #define IDC_CONTEXT 1028 42 | #define IDC_SYSLINK1 1029 43 | #define IDC_SYSLINK_SITE 1029 44 | #define ID_HYPEREDITMENU_COPYHASH 32772 45 | #define ID_HYPEREDITMENU_X 32773 46 | #define ID_HYPEREDITMENU_SEARCHGOOGLE 32774 47 | #define ID_HYPEREDITMENU_SEARCHVIRUSTOTAL 32775 48 | 49 | // Next default values for new objects 50 | // 51 | #ifdef APSTUDIO_INVOKED 52 | #ifndef APSTUDIO_READONLY_SYMBOLS 53 | #define _APS_NEXT_RESOURCE_VALUE 136 54 | #define _APS_NEXT_COMMAND_VALUE 32776 55 | #define _APS_NEXT_CONTROL_VALUE 1030 56 | #define _APS_NEXT_SYMED_VALUE 101 57 | #endif 58 | #endif 59 | -------------------------------------------------------------------------------- /trunk/source/WinMFC/version.h: -------------------------------------------------------------------------------- 1 | #ifndef _VERSION_H_ 2 | #define _VERSION_H_ 3 | 4 | #define NUM_VERSION_LEGACY 2,4,0,0 5 | #define STR_VERSION_LEGACY "2.4.0.0" 6 | 7 | #endif 8 | -------------------------------------------------------------------------------- /trunk/source/WinUI/AboutPage.xaml: -------------------------------------------------------------------------------- 1 | 2 | 11 | 12 | 13 | 14 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 36 | 37 | 41 | 42 | 43 | 44 | 50 | 51 |