Skip to content

Commit 81d0919

Browse files
committed
add icon and separator to explorer context menu
1 parent 7ff1fc3 commit 81d0919

8 files changed

+36
-15
lines changed

CHashCheck.cpp

+20-2
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,14 @@
1010
#include "HashCheckUI.h"
1111
#include "HashCheckOptions.h"
1212

13+
CHashCheck::CHashCheck( )
14+
{
15+
InterlockedIncrement(&g_cRefThisDll);
16+
m_cRef = 1;
17+
m_hList = NULL;
18+
m_hMenuBitmap = (HBITMAP)LoadImage(g_hModThisDll, MAKEINTRESOURCE(IDI_MENUBITMAP), IMAGE_BITMAP, 0, 0, LR_DEFAULTSIZE | LR_CREATEDIBSECTION);
19+
}
20+
1321
STDMETHODIMP CHashCheck::QueryInterface( REFIID riid, LPVOID *ppv )
1422
{
1523
if (IsEqualIID(riid, IID_IUnknown))
@@ -105,10 +113,20 @@ STDMETHODIMP CHashCheck::QueryContextMenu( HMENU hmenu, UINT indexMenu, UINT idC
105113
TCHAR szMenuText[MAX_STRINGMSG];
106114
LoadString(g_hModThisDll, IDS_HS_MENUTEXT, szMenuText, countof(szMenuText));
107115

108-
if (InsertMenu(hmenu, indexMenu, MF_STRING | MF_BYPOSITION, idCmdFirst, szMenuText))
116+
MENUITEMINFO mii;
117+
mii.cbSize = sizeof(mii);
118+
mii.fMask = MIIM_FTYPE | MIIM_ID | MIIM_STRING | MIIM_BITMAP;
119+
mii.fType = MFT_STRING;
120+
mii.wID = idCmdFirst;
121+
mii.dwTypeData = szMenuText;
122+
mii.hbmpItem = m_hMenuBitmap;
123+
if (! InsertMenuItem(hmenu, indexMenu, TRUE, &mii))
124+
return(MAKE_HRESULT(SEVERITY_SUCCESS, FACILITY_NULL, 0));
125+
126+
if (! InsertMenu(hmenu, indexMenu + 1, MF_SEPARATOR | MF_BYPOSITION, 0, NULL))
109127
return(MAKE_HRESULT(SEVERITY_SUCCESS, FACILITY_NULL, 1));
110128

111-
return(MAKE_HRESULT(SEVERITY_SUCCESS, FACILITY_NULL, 0));
129+
return(MAKE_HRESULT(SEVERITY_SUCCESS, FACILITY_NULL, 2));
112130
}
113131

114132
STDMETHODIMP CHashCheck::InvokeCommand( LPCMINVOKECOMMANDINFO pici )

CHashCheck.hpp

+3-2
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,11 @@ class CHashCheck : public IShellExtInit, IContextMenu, IShellPropSheetExt, IDrop
1616
protected:
1717
CREF m_cRef;
1818
HSIMPLELIST m_hList;
19+
HBITMAP m_hMenuBitmap;
1920

2021
public:
21-
CHashCheck( ) { InterlockedIncrement(&g_cRefThisDll); m_cRef = 1; m_hList = NULL; }
22-
~CHashCheck( ) { InterlockedDecrement(&g_cRefThisDll); SLRelease(m_hList); }
22+
CHashCheck( );
23+
~CHashCheck() { InterlockedDecrement(&g_cRefThisDll); SLRelease(m_hList); DeleteObject(m_hMenuBitmap); }
2324

2425
// IUnknown members
2526
STDMETHODIMP QueryInterface( REFIID, LPVOID * );

HashCheck.bmp

1.05 KB
Binary file not shown.

HashCheck.rc

+1
Original file line numberDiff line numberDiff line change
@@ -144,5 +144,6 @@ IDD_OPTIONS DIALOGEX 10, 10, 200, 264
144144

145145
IDR_RT_MANIFEST RT_MANIFEST "HashCheck.manifest"
146146
IDI_FILETYPE ICON "HashCheck.ico"
147+
IDI_MENUBITMAP BITMAP "HashCheck.bmp"
147148

148149
#include "HashCheckTranslations.rc"

HashCheckResources.h

+5-4
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,13 @@
33
#define IDR_RT_MANIFEST ISOLATIONAWARE_MANIFEST_RESOURCE_ID
44

55
#define IDI_FILETYPE 100
6+
#define IDI_MENUBITMAP 101
67

78
// Controls common to multiple dialogs
8-
#define IDC_PROG_TOTAL 101
9-
#define IDC_PROG_FILE 102
10-
#define IDC_PAUSE 103
11-
#define IDC_STOP 104
9+
#define IDC_PROG_TOTAL 102
10+
#define IDC_PROG_FILE 103
11+
#define IDC_PAUSE 104
12+
#define IDC_STOP 105
1213
#define IDC_OK IDOK
1314
#define IDC_CANCEL IDCANCEL
1415

appveyor.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
version: 2.4.0.42-beta
1+
version: 2.4.0.46-beta
22

33
image: Visual Studio 2015
44

installer/HashCheck.nsi

+4-4
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
Unicode true
77

88
Name "HashCheck"
9-
OutFile "HashCheckSetup-v2.4.0.42-beta.exe"
9+
OutFile "HashCheckSetup-v2.4.0.46-beta.exe"
1010

1111
RequestExecutionLevel admin
1212
ManifestSupportedOS all
@@ -53,13 +53,13 @@ FunctionEnd
5353
!insertmacro MUI_LANGUAGE "Ukrainian"
5454
!insertmacro MUI_LANGUAGE "Catalan"
5555

56-
VIProductVersion "2.4.0.42-beta"
56+
VIProductVersion "2.4.0.46-beta"
5757
VIAddVersionKey /LANG=${LANG_ENGLISH} "ProductName" "HashCheck Shell Extension"
58-
VIAddVersionKey /LANG=${LANG_ENGLISH} "ProductVersion" "2.4.0.42-beta"
58+
VIAddVersionKey /LANG=${LANG_ENGLISH} "ProductVersion" "2.4.0.46-beta"
5959
VIAddVersionKey /LANG=${LANG_ENGLISH} "Comments" "Installer distributed from https://github.com/gurnec/HashCheck/releases"
6060
VIAddVersionKey /LANG=${LANG_ENGLISH} "LegalCopyright" "Copyright © 2008-2016 Kai Liu, Christopher Gurnee, Tim Schlueter, et al. All rights reserved."
6161
VIAddVersionKey /LANG=${LANG_ENGLISH} "FileDescription" "Installer (x86/x64) from https://github.com/gurnec/HashCheck/releases"
62-
VIAddVersionKey /LANG=${LANG_ENGLISH} "FileVersion" "2.4.0.42-beta"
62+
VIAddVersionKey /LANG=${LANG_ENGLISH} "FileVersion" "2.4.0.46-beta"
6363

6464
; With solid compression, files that are required before the
6565
; actual installation should be stored first in the data block,

version.h

+2-2
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,10 @@
1212
#define HASHCHECK_NAME_STR "HashCheck Shell Extension"
1313

1414
// Full version: MUST be in the form of major,minor,revision,build
15-
#define HASHCHECK_VERSION_FULL 2,4,0,42
15+
#define HASHCHECK_VERSION_FULL 2,4,0,46
1616

1717
// String version: May be any suitable string
18-
#define HASHCHECK_VERSION_STR "2.4.0.42-beta"
18+
#define HASHCHECK_VERSION_STR "2.4.0.46-beta"
1919

2020
#ifdef _USRDLL
2121
// PE version: MUST be in the form of major.minor

0 commit comments

Comments
 (0)