Changeset 3800d1a4cbc6…
Parent f732a750e02b…
by
Changes to 5 files · Browse files at 3800d1a4cbc6 Showing diff from parent f732a750e02b Diff from another changeset...
@@ -12,6 +12,16 @@ Root: HKLM32; Subkey: Software\TortoiseHg; Check: Is64BitInstallMode; Flags: uninsdeletekey
Root: HKLM32; Subkey: Software\TortoiseHg; Check: Is64BitInstallMode; ValueType: string; ValueName: ; ValueData: {app}
+; cmenu handler COM control
+Root: HKCR; Subkey: CLSID\{{B456DB9F-7BF4-478c-937A-05130C2C212E}; Flags: uninsdeletekey; Components: shell
+Root: HKCR; Subkey: CLSID\{{B456DB9F-7BF4-478c-937A-05130C2C212E}; ValueType: string; ValueName: ; ValueData: TortoiseHg; Components: shell
+Root: HKCR; Subkey: CLSID\{{B456DB9F-7BF4-478c-937A-05130C2C212E}\InProcServer32; ValueType: string; ValueName: ; ValueData: {app}\THgShell.dll; Components: shell
+Root: HKCR; Subkey: CLSID\{{B456DB9F-7BF4-478c-937A-05130C2C212E}\InProcServer32; ValueType: string; ValueName: ThreadingModel; ValueData: Apartment; Components: shell
+Root: HKCR32; Subkey: CLSID\{{B456DB9F-7BF4-478c-937A-05130C2C212E}; Check: Is64BitInstallMode; Flags: uninsdeletekey; Components: shell
+Root: HKCR32; Subkey: CLSID\{{B456DB9F-7BF4-478c-937A-05130C2C212E}; Check: Is64BitInstallMode; ValueType: string; ValueName: ; ValueData: TortoiseHg; Components: shell
+Root: HKCR32; Subkey: CLSID\{{B456DB9F-7BF4-478c-937A-05130C2C212E}\InProcServer32; Check: Is64BitInstallMode; ValueType: string; ValueName: ; ValueData: {app}\THgShellx86.dll; Components: shell
+Root: HKCR32; Subkey: CLSID\{{B456DB9F-7BF4-478c-937A-05130C2C212E}\InProcServer32; Check: Is64BitInstallMode; ValueType: string; ValueName: ThreadingModel; ValueData: Apartment; Components: shell
+
; overlay handler COM controls
; Normal
Root: HKCR; Subkey: CLSID\{{B456DBA0-7BF4-478c-937A-05130C2C212E}; Flags: uninsdeletekey; Components: shell
@@ -64,10 +74,12 @@Root: HKLM32; Subkey: Software\TortoiseOverlays\Unversioned; Check: Is64BitInstallMode; ValueType: string; ValueName: TortoiseHg; ValueData: {{B456DBA6-7BF4-478c-937A-05130C2C212E}; Components: shell
; Make them approved by administrator
+Root: HKLM; Subkey: SOFTWARE\Microsoft\Windows\CurrentVersion\Shell Extensions\Approved; ValueType: string; ValueName: {{B456DB9F-7BF4-478c-937A-05130C2C212E}; ValueData: TortoiseHg; Flags: uninsdeletevalue; Components: shell
Root: HKLM; Subkey: SOFTWARE\Microsoft\Windows\CurrentVersion\Shell Extensions\Approved; ValueType: string; ValueName: {{B456DBA0-7BF4-478c-937A-05130C2C212E}; ValueData: TortoiseHg; Flags: uninsdeletevalue; Components: shell
Root: HKLM; Subkey: SOFTWARE\Microsoft\Windows\CurrentVersion\Shell Extensions\Approved; ValueType: string; ValueName: {{B456DBA1-7BF4-478c-937A-05130C2C212E}; ValueData: TortoiseHg; Flags: uninsdeletevalue; Components: shell
Root: HKLM; Subkey: SOFTWARE\Microsoft\Windows\CurrentVersion\Shell Extensions\Approved; ValueType: string; ValueName: {{B456DBA2-7BF4-478c-937A-05130C2C212E}; ValueData: TortoiseHg; Flags: uninsdeletevalue; Components: shell
Root: HKLM; Subkey: SOFTWARE\Microsoft\Windows\CurrentVersion\Shell Extensions\Approved; ValueType: string; ValueName: {{B456DBA6-7BF4-478c-937A-05130C2C212E}; ValueData: TortoiseHg; Flags: uninsdeletevalue; Components: shell
+Root: HKLM32; Subkey: SOFTWARE\Microsoft\Windows\CurrentVersion\Shell Extensions\Approved; Check: Is64BitInstallMode; ValueType: string; ValueName: {{B456DB9F-7BF4-478c-937A-05130C2C212E}; ValueData: TortoiseHg; Flags: uninsdeletevalue; Components: shell
Root: HKLM32; Subkey: SOFTWARE\Microsoft\Windows\CurrentVersion\Shell Extensions\Approved; Check: Is64BitInstallMode; ValueType: string; ValueName: {{B456DBA0-7BF4-478c-937A-05130C2C212E}; ValueData: TortoiseHg; Flags: uninsdeletevalue; Components: shell
Root: HKLM32; Subkey: SOFTWARE\Microsoft\Windows\CurrentVersion\Shell Extensions\Approved; Check: Is64BitInstallMode; ValueType: string; ValueName: {{B456DBA1-7BF4-478c-937A-05130C2C212E}; ValueData: TortoiseHg; Flags: uninsdeletevalue; Components: shell
Root: HKLM32; Subkey: SOFTWARE\Microsoft\Windows\CurrentVersion\Shell Extensions\Approved; Check: Is64BitInstallMode; ValueType: string; ValueName: {{B456DBA2-7BF4-478c-937A-05130C2C212E}; ValueData: TortoiseHg; Flags: uninsdeletevalue; Components: shell
@@ -75,32 +87,32 @@
; Context menu handlers
Root: HKCR; Subkey: Directory\shellex\ContextMenuHandlers\TortoiseHgCMenu; Flags: uninsdeletekey; Components: shell
-Root: HKCR; Subkey: Directory\shellex\ContextMenuHandlers\TortoiseHgCMenu; ValueType: string; ValueName: ; ValueData: {{B456DBA0-7BF4-478c-937A-05130C2C212E}; Components: shell
+Root: HKCR; Subkey: Directory\shellex\ContextMenuHandlers\TortoiseHgCMenu; ValueType: string; ValueName: ; ValueData: {{B456DB9F-7BF4-478c-937A-05130C2C212E}; Components: shell
Root: HKCR32; Subkey: Directory\shellex\ContextMenuHandlers\TortoiseHgCMenu; Check: Is64BitInstallMode; Flags: uninsdeletekey; Components: shell
-Root: HKCR32; Subkey: Directory\shellex\ContextMenuHandlers\TortoiseHgCMenu; Check: Is64BitInstallMode; ValueType: string; ValueName: ; ValueData: {{B456DBA0-7BF4-478c-937A-05130C2C212E}; Components: shell
+Root: HKCR32; Subkey: Directory\shellex\ContextMenuHandlers\TortoiseHgCMenu; Check: Is64BitInstallMode; ValueType: string; ValueName: ; ValueData: {{B456DB9F-7BF4-478c-937A-05130C2C212E}; Components: shell
Root: HKCR; Subkey: Directory\Background\shellex\ContextMenuHandlers\TortoiseHgCMenu; Flags: uninsdeletekey; Components: shell
-Root: HKCR; Subkey: Directory\Background\shellex\ContextMenuHandlers\TortoiseHgCMenu; ValueType: string; ValueName: ; ValueData: {{B456DBA0-7BF4-478c-937A-05130C2C212E}; Components: shell
+Root: HKCR; Subkey: Directory\Background\shellex\ContextMenuHandlers\TortoiseHgCMenu; ValueType: string; ValueName: ; ValueData: {{B456DB9F-7BF4-478c-937A-05130C2C212E}; Components: shell
Root: HKCR32; Subkey: Directory\Background\shellex\ContextMenuHandlers\TortoiseHgCMenu; Check: Is64BitInstallMode; Flags: uninsdeletekey; Components: shell
-Root: HKCR32; Subkey: Directory\Background\shellex\ContextMenuHandlers\TortoiseHgCMenu; Check: Is64BitInstallMode; ValueType: string; ValueName: ; ValueData: {{B456DBA0-7BF4-478c-937A-05130C2C212E}; Components: shell
+Root: HKCR32; Subkey: Directory\Background\shellex\ContextMenuHandlers\TortoiseHgCMenu; Check: Is64BitInstallMode; ValueType: string; ValueName: ; ValueData: {{B456DB9F-7BF4-478c-937A-05130C2C212E}; Components: shell
Root: HKCR; Subkey: Drive\shellex\ContextMenuHandlers\TortoiseHgCMenu; Flags: uninsdeletekey; Components: shell
-Root: HKCR; Subkey: Drive\shellex\ContextMenuHandlers\TortoiseHgCMenu; ValueType: string; ValueName: ; ValueData: {{B456DBA0-7BF4-478c-937A-05130C2C212E}; Components: shell
+Root: HKCR; Subkey: Drive\shellex\ContextMenuHandlers\TortoiseHgCMenu; ValueType: string; ValueName: ; ValueData: {{B456DB9F-7BF4-478c-937A-05130C2C212E}; Components: shell
Root: HKCR32; Subkey: Drive\shellex\ContextMenuHandlers\TortoiseHgCMenu; Check: Is64BitInstallMode; Flags: uninsdeletekey; Components: shell
-Root: HKCR32; Subkey: Drive\shellex\ContextMenuHandlers\TortoiseHgCMenu; Check: Is64BitInstallMode; ValueType: string; ValueName: ; ValueData: {{B456DBA0-7BF4-478c-937A-05130C2C212E}; Components: shell
+Root: HKCR32; Subkey: Drive\shellex\ContextMenuHandlers\TortoiseHgCMenu; Check: Is64BitInstallMode; ValueType: string; ValueName: ; ValueData: {{B456DB9F-7BF4-478c-937A-05130C2C212E}; Components: shell
Root: HKCR; Subkey: Folder\shellex\ContextMenuHandlers\TortoiseHgCMenu; Flags: uninsdeletekey; Components: shell
-Root: HKCR; Subkey: Folder\shellex\ContextMenuHandlers\TortoiseHgCMenu; ValueType: string; ValueName: ; ValueData: {{B456DBA0-7BF4-478c-937A-05130C2C212E}; Components: shell
+Root: HKCR; Subkey: Folder\shellex\ContextMenuHandlers\TortoiseHgCMenu; ValueType: string; ValueName: ; ValueData: {{B456DB9F-7BF4-478c-937A-05130C2C212E}; Components: shell
Root: HKCR32; Subkey: Folder\shellex\ContextMenuHandlers\TortoiseHgCMenu; Check: Is64BitInstallMode; Flags: uninsdeletekey; Components: shell
-Root: HKCR32; Subkey: Folder\shellex\ContextMenuHandlers\TortoiseHgCMenu; Check: Is64BitInstallMode; ValueType: string; ValueName: ; ValueData: {{B456DBA0-7BF4-478c-937A-05130C2C212E}; Components: shell
+Root: HKCR32; Subkey: Folder\shellex\ContextMenuHandlers\TortoiseHgCMenu; Check: Is64BitInstallMode; ValueType: string; ValueName: ; ValueData: {{B456DB9F-7BF4-478c-937A-05130C2C212E}; Components: shell
Root: HKCR; Subkey: *\shellex\ContextMenuHandlers\TortoiseHgCMenu; Flags: uninsdeletekey; Components: shell
-Root: HKCR; Subkey: *\shellex\ContextMenuHandlers\TortoiseHgCMenu; ValueType: string; ValueName: ; ValueData: {{B456DBA0-7BF4-478c-937A-05130C2C212E}; Components: shell
+Root: HKCR; Subkey: *\shellex\ContextMenuHandlers\TortoiseHgCMenu; ValueType: string; ValueName: ; ValueData: {{B456DB9F-7BF4-478c-937A-05130C2C212E}; Components: shell
Root: HKCR32; Subkey: *\shellex\ContextMenuHandlers\TortoiseHgCMenu; Check: Is64BitInstallMode; Flags: uninsdeletekey; Components: shell
-Root: HKCR32; Subkey: *\shellex\ContextMenuHandlers\TortoiseHgCMenu; Check: Is64BitInstallMode; ValueType: string; ValueName: ; ValueData: {{B456DBA0-7BF4-478c-937A-05130C2C212E}; Components: shell
+Root: HKCR32; Subkey: *\shellex\ContextMenuHandlers\TortoiseHgCMenu; Check: Is64BitInstallMode; ValueType: string; ValueName: ; ValueData: {{B456DB9F-7BF4-478c-937A-05130C2C212E}; Components: shell
Root: HKCR; Subkey: InternetShortcut\shellex\ContextMenuHandlers\TortoiseHgCMenu; Flags: uninsdeletekey; Components: shell
-Root: HKCR; Subkey: InternetShortcut\shellex\ContextMenuHandlers\TortoiseHgCMenu; ValueType: string; ValueName: ; ValueData: {{B456DBA0-7BF4-478c-937A-05130C2C212E}; Components: shell
+Root: HKCR; Subkey: InternetShortcut\shellex\ContextMenuHandlers\TortoiseHgCMenu; ValueType: string; ValueName: ; ValueData: {{B456DB9F-7BF4-478c-937A-05130C2C212E}; Components: shell
Root: HKCR32; Subkey: InternetShortcut\shellex\ContextMenuHandlers\TortoiseHgCMenu; Check: Is64BitInstallMode; Flags: uninsdeletekey; Components: shell
-Root: HKCR32; Subkey: InternetShortcut\shellex\ContextMenuHandlers\TortoiseHgCMenu; Check: Is64BitInstallMode; ValueType: string; ValueName: ; ValueData: {{B456DBA0-7BF4-478c-937A-05130C2C212E}; Components: shell
+Root: HKCR32; Subkey: InternetShortcut\shellex\ContextMenuHandlers\TortoiseHgCMenu; Check: Is64BitInstallMode; ValueType: string; ValueName: ; ValueData: {{B456DB9F-7BF4-478c-937A-05130C2C212E}; Components: shell
|
|
|
@@ -301,10 +301,10 @@
// IContextMenu
STDMETHODIMP
-CShellExt::QueryContextMenu(
+CShellExtCMenu::QueryContextMenu(
HMENU hMenu, UINT indexMenu, UINT idCmdFirst, UINT idCmdLast, UINT uFlags)
{
- TDEBUG_TRACE("CShellExt::QueryContextMenu");
+ TDEBUG_TRACE("CShellExtCMenu::QueryContextMenu");
InitMenuMaps();
UINT idCmd = idCmdFirst;
@@ -444,7 +444,7 @@ RemoveMenu(hSubMenu, indexSubMenu - 1, MF_BYPOSITION);
}
- TDEBUG_TRACE(" CShellExt::QueryContextMenu: adding main THG menu");
+ TDEBUG_TRACE(" CShellExtCMenu::QueryContextMenu: adding main THG menu");
InsertSubMenuItemWithIcon2(hMenu, hSubMenu, indexMenu++, idCmd++,
L"TortoiseHG", "hg.ico");
@@ -456,15 +456,15 @@
STDMETHODIMP
-CShellExt::InvokeCommand(LPCMINVOKECOMMANDINFO lpcmi)
+CShellExtCMenu::InvokeCommand(LPCMINVOKECOMMANDINFO lpcmi)
{
- TDEBUG_TRACE("CShellExt::InvokeCommand");
+ TDEBUG_TRACE("CShellExtCMenu::InvokeCommand");
HRESULT hr = E_INVALIDARG;
if (!HIWORD(lpcmi->lpVerb))
{
UINT idCmd = LOWORD(lpcmi->lpVerb);
- TDEBUG_TRACE("CShellExt::InvokeCommand: idCmd = " << idCmd);
+ TDEBUG_TRACE("CShellExtCMenu::InvokeCommand: idCmd = " << idCmd);
MenuIdCmdMap::iterator iter = MenuIdMap.find(idCmd);
if (iter != MenuIdMap.end())
{
@@ -474,7 +474,7 @@ else
{
TDEBUG_TRACE(
- "CShellExt::InvokeCommand: action not found for idCmd "
+ "CShellExtCMenu::InvokeCommand: action not found for idCmd "
<< idCmd
);
}
@@ -484,7 +484,7 @@
STDMETHODIMP
-CShellExt::GetCommandString(
+CShellExtCMenu::GetCommandString(
UINT_PTR idCmd, UINT uFlags, UINT FAR *reserved,
LPSTR pszName, UINT cchMax)
{
@@ -513,7 +513,7 @@ }
TDEBUG_TRACE(
- "CShellExt::GetCommandString: idCmd = " << idCmd
+ "CShellExtCMenu::GetCommandString: idCmd = " << idCmd
<< ", uFlags = " << uFlags << " (" << sflags << ")"
<< ", cchMax = " << cchMax
);
@@ -521,12 +521,12 @@ MenuIdCmdMap::iterator iter = MenuIdMap.find(static_cast<UINT>(idCmd));
if (iter == MenuIdMap.end())
{
- TDEBUG_TRACE("CShellExt::GetCommandString: idCmd not found");
+ TDEBUG_TRACE("CShellExtCMenu::GetCommandString: idCmd not found");
}
else
{
TDEBUG_TRACE(
- "CShellExt::GetCommandString: name = \"" << iter->second.name << "\"");
+ "CShellExtCMenu::GetCommandString: name = \"" << iter->second.name << "\"");
if (uFlags == GCS_HELPTEXTW)
{
@@ -537,7 +537,7 @@ if (size >= 40)
{
TDEBUG_TRACE(
- "CShellExt::GetCommandString: warning:"
+ "CShellExtCMenu::GetCommandString: warning:"
<< " length of help text is " << size
<< ", which is not reasonably short (<40)");
}
@@ -566,7 +566,7 @@
if (cchMax < 1)
{
- TDEBUG_TRACE("CShellExt::GetCommandString: cchMax = "
+ TDEBUG_TRACE("CShellExtCMenu::GetCommandString: cchMax = "
<< cchMax << " (is <1)");
return res;
}
@@ -583,7 +583,7 @@
size = wcslen(src);
- TDEBUG_TRACEW(L"CShellExt::GetCommandString: res = " << int(res)
+ TDEBUG_TRACEW(L"CShellExtCMenu::GetCommandString: res = " << int(res)
<< L", pszName (wide) = \"" << dest << L"\"");
}
else
@@ -593,14 +593,14 @@
size = strlen(psz);
- TDEBUG_TRACE("CShellExt::GetCommandString: res = " << int(res)
+ TDEBUG_TRACE("CShellExtCMenu::GetCommandString: res = " << int(res)
<< ", pszName = \"" << psz << "\"");
}
if (size > cchMax-1)
{
TDEBUG_TRACE(
- "CShellExt::GetCommandString: string was truncated: size = "
+ "CShellExtCMenu::GetCommandString: string was truncated: size = "
<< size << ", cchMax = " << cchMax);
}
@@ -609,7 +609,7 @@
STDMETHODIMP
-CShellExt::HandleMenuMsg(UINT uMsg, WPARAM wParam, LPARAM lParam)
+CShellExtCMenu::HandleMenuMsg(UINT uMsg, WPARAM wParam, LPARAM lParam)
{
LRESULT res;
return HandleMenuMsg2(uMsg, wParam, lParam, &res);
@@ -617,7 +617,7 @@
STDMETHODIMP
-CShellExt::HandleMenuMsg2(
+CShellExtCMenu::HandleMenuMsg2(
UINT uMsg, WPARAM wParam, LPARAM lParam, LRESULT* pResult)
{
// A great tutorial on owner drawn menus in shell extension can be found
@@ -667,7 +667,7 @@}
-void CShellExt::DoHgtk(const std::string &cmd)
+void CShellExtCMenu::DoHgtk(const std::string &cmd)
{
std::string dir = GetTHgProgRoot();
if (dir.empty())
|
@@ -7,10 +7,10 @@ #include <shlwapi.h>
-STDMETHODIMP CShellExt::GetOverlayInfo(
+STDMETHODIMP CShellExtOverlay::GetOverlayInfo(
LPWSTR pwszIconFile, int cchMax, int *pIndex, DWORD *pdwFlags)
{
- TDEBUG_TRACE("CShellExt::GetOverlayInfo: myTortoiseClass = " << myTortoiseClass);
+ TDEBUG_TRACE("CShellExtOverlay::GetOverlayInfo: myTortoiseClass = " << myTortoiseClass);
// icons are determined by TortoiseOverlays shim
*pIndex = 0;
*pdwFlags = 0;
@@ -19,16 +19,16 @@}
-STDMETHODIMP CShellExt::GetPriority(int *pPriority)
+STDMETHODIMP CShellExtOverlay::GetPriority(int *pPriority)
{
*pPriority = 1;
return S_OK;
}
-STDMETHODIMP CShellExt::IsMemberOf(LPCWSTR pwszPath, DWORD /* dwAttrib */)
+STDMETHODIMP CShellExtOverlay::IsMemberOf(LPCWSTR pwszPath, DWORD /* dwAttrib */)
{
- ThgCriticalSection cs(GetCriticalSection());
+ ThgCriticalSection cs(CShellExt::GetCriticalSection());
std::string cval;
if (GetRegistryConfig("EnableOverlays", cval) != 0 && cval == "0")
|
|
|
@@ -10,6 +10,8 @@ #define INITGUID
#include <initguid.h>
+DEFINE_GUID(CLSID_TortoiseHgCmenu, 0xb456db9fL, 0x7bf4, 0x478c, 0x93, 0x7a, 0x5, 0x13, 0xc, 0x2c, 0x21, 0x2e);
+
DEFINE_GUID(CLSID_TortoiseHg0, 0xb456dba0L, 0x7bf4, 0x478c, 0x93, 0x7a, 0x5, 0x13, 0xc, 0x2c, 0x21, 0x2e);
DEFINE_GUID(CLSID_TortoiseHg1, 0xb456dba1L, 0x7bf4, 0x478c, 0x93, 0x7a, 0x5, 0x13, 0xc, 0x2c, 0x21, 0x2e);
DEFINE_GUID(CLSID_TortoiseHg2, 0xb456dba2L, 0x7bf4, 0x478c, 0x93, 0x7a, 0x5, 0x13, 0xc, 0x2c, 0x21, 0x2e);
@@ -77,32 +79,39 @@ TDEBUG_TRACE("DllGetClassObject clsid = " << WideToMultibyte(pwszShellExt));
*ppvOut = NULL;
- typedef ThgClassFactory<CShellExt> Fact;
+ typedef ThgClassFactory<CShellExtOverlay> FactOvl;
+ typedef ThgClassFactory<CShellExtCMenu> FactCmenu;
- if (IsEqualIID(rclsid, CLSID_TortoiseHg0))
+ if (IsEqualIID(rclsid, CLSID_TortoiseHgCmenu))
{
- Fact *pcf = new Fact('C'); // clean
+ FactCmenu *pcf = new FactCmenu(0);
+ TDEBUG_TRACE("DllGetClassObject clsname = " << "CLSID_TortoiseHgCmenu");
+ return pcf->QueryInterface(riid, ppvOut);
+ }
+ else if (IsEqualIID(rclsid, CLSID_TortoiseHg0))
+ {
+ FactOvl *pcf = new FactOvl('C'); // clean
TDEBUG_TRACE("DllGetClassObject clsname = " << "CLSID_TortoiseHg0");
++InitStatus::inst().unchanged_;
return pcf->QueryInterface(riid, ppvOut);
}
else if (IsEqualIID(rclsid, CLSID_TortoiseHg1))
{
- Fact *pcf = new Fact('A'); // added
+ FactOvl *pcf = new FactOvl('A'); // added
TDEBUG_TRACE("DllGetClassObject clsname = " << "CLSID_TortoiseHg1");
++InitStatus::inst().added_;
return pcf->QueryInterface(riid, ppvOut);
}
else if (IsEqualIID(rclsid, CLSID_TortoiseHg2))
{
- Fact *pcf = new Fact('M'); // modified
+ FactOvl *pcf = new FactOvl('M'); // modified
TDEBUG_TRACE("DllGetClassObject clsname = " << "CLSID_TortoiseHg2");
++InitStatus::inst().modified_;
return pcf->QueryInterface(riid, ppvOut);
}
else if (IsEqualIID(rclsid, CLSID_TortoiseHg6))
{
- Fact *pcf = new Fact('?'); // not in repo
+ FactOvl *pcf = new FactOvl('?'); // not in repo
TDEBUG_TRACE("DllGetClassObject clsname = " << "CLSID_TortoiseHg6");
++InitStatus::inst().notinrepo_;
return pcf->QueryInterface(riid, ppvOut);
@@ -124,26 +133,35 @@}
-CShellExt::CShellExt(char tortoiseClass) :
- myTortoiseClass(tortoiseClass),
- m_ppszFileUserClickedOn(0)
+CShellExtOverlay::CShellExtOverlay(char tortoiseClass) :
+ myTortoiseClass(tortoiseClass)
{
- ThgCriticalSection cs(GetCriticalSection());
-
+ ThgCriticalSection cs(CShellExt::GetCriticalSection());
m_cRef = 0L;
- m_pDataObj = NULL;
-
g_cRefThisDll++;
}
+CShellExtCMenu::CShellExtCMenu(char dummy) :
+ m_ppszFileUserClickedOn(0)
+{
+ ThgCriticalSection cs(CShellExt::GetCriticalSection());
+ m_cRef = 0L;
+ m_pDataObj = NULL;
+ g_cRefThisDll++;
+}
-CShellExt::~CShellExt()
+
+CShellExtOverlay::~CShellExtOverlay()
{
- ThgCriticalSection cs(GetCriticalSection());
+ ThgCriticalSection cs(CShellExt::GetCriticalSection());
+ g_cRefThisDll--;
+}
+CShellExtCMenu::~CShellExtCMenu()
+{
+ ThgCriticalSection cs(CShellExt::GetCriticalSection());
if (m_pDataObj)
m_pDataObj->Release();
-
g_cRefThisDll--;
}
@@ -156,19 +174,37 @@
void CShellExt::IncDllRef()
{
- ThgCriticalSection cs(GetCriticalSection());
+ ThgCriticalSection cs(CShellExt::GetCriticalSection());
g_cRefThisDll++;
}
void CShellExt::DecDllRef()
{
- ThgCriticalSection cs(GetCriticalSection());
+ ThgCriticalSection cs(CShellExt::GetCriticalSection());
g_cRefThisDll--;
}
-STDMETHODIMP CShellExt::QueryInterface(REFIID riid, LPVOID FAR* ppv)
+STDMETHODIMP CShellExtOverlay::QueryInterface(REFIID riid, LPVOID FAR* ppv)
+{
+ *ppv = NULL;
+ if (IsEqualIID(riid, IID_IShellIconOverlayIdentifier)
+ || IsEqualIID(riid, IID_IUnknown) )
+ {
+ *ppv = (IShellIconOverlayIdentifier*) this;
+ }
+
+ if (*ppv)
+ {
+ AddRef();
+ return NOERROR;
+ }
+
+ return E_NOINTERFACE;
+}
+
+STDMETHODIMP CShellExtCMenu::QueryInterface(REFIID riid, LPVOID FAR* ppv)
{
*ppv = NULL;
if (IsEqualIID(riid, IID_IShellExtInit) || IsEqualIID(riid, IID_IUnknown))
@@ -187,10 +223,6 @@ {
*ppv = (IContextMenu3*) this;
}
- else if (IsEqualIID(riid, IID_IShellIconOverlayIdentifier))
- {
- *ppv = (IShellIconOverlayIdentifier*) this;
- }
if (*ppv)
{
@@ -202,31 +234,44 @@}
-STDMETHODIMP_(ULONG) CShellExt::AddRef()
+STDMETHODIMP_(ULONG) CShellExtOverlay::AddRef()
{
- ThgCriticalSection cs(GetCriticalSection());
+ ThgCriticalSection cs(CShellExt::GetCriticalSection());
return ++m_cRef;
}
+STDMETHODIMP_(ULONG) CShellExtCMenu::AddRef()
+{
+ ThgCriticalSection cs(CShellExt::GetCriticalSection());
+ return ++m_cRef;
+}
-STDMETHODIMP_(ULONG) CShellExt::Release()
+
+STDMETHODIMP_(ULONG) CShellExtOverlay::Release()
{
- ThgCriticalSection cs(GetCriticalSection());
-
+ ThgCriticalSection cs(CShellExt::GetCriticalSection());
if(--m_cRef)
return m_cRef;
-
delete this;
return 0L;
}
+STDMETHODIMP_(ULONG) CShellExtCMenu::Release()
+{
+ ThgCriticalSection cs(CShellExt::GetCriticalSection());
+ if(--m_cRef)
+ return m_cRef;
+ delete this;
+ return 0L;
+}
-STDMETHODIMP CShellExt::Initialize(
+
+STDMETHODIMP CShellExtCMenu::Initialize(
LPCITEMIDLIST pIDFolder, LPDATAOBJECT pDataObj, HKEY hRegKey)
{
TCHAR name[MAX_PATH+1];
- TDEBUG_TRACE("CShellExt::Initialize");
+ TDEBUG_TRACE("CShellExtCMenu::Initialize");
TDEBUG_TRACE(" pIDFolder: " << pIDFolder);
TDEBUG_TRACE(" pDataObj: " << pDataObj);
|
@@ -5,56 +5,74 @@ #include <string>
-class CShellExt:
- public IContextMenu3, IShellIconOverlayIdentifier, IShellExtInit
+class CShellExt
{
+public:
+ static LPCRITICAL_SECTION GetCriticalSection();
+ static void IncDllRef();
+ static void DecDllRef();
+};
+
+
+class CShellExtCMenu: public IContextMenu3, IShellExtInit
+{
+ ULONG m_cRef;
+ LPDATAOBJECT m_pDataObj;
+
+ LPTSTR* m_ppszFileUserClickedOn; // [MAX_PATH]
+ std::vector<std::string> myFiles;
+ std::string myFolder;
+
+ void DoHgtk(const std::string&);
+
+public:
+ explicit CShellExtCMenu(char dummy);
+ ~CShellExtCMenu();
+
+ // IUnknown
+ STDMETHODIMP QueryInterface(REFIID riid, LPVOID FAR *ppv);
+ STDMETHODIMP_(ULONG) AddRef();
+ STDMETHODIMP_(ULONG) Release();
+
+ // IContextMenu3
+ STDMETHODIMP QueryContextMenu(
+ HMENU hMenu, UINT indexMenu, UINT idCmdFirst, UINT idCmdLast,
+ UINT uFlags);
+ STDMETHODIMP InvokeCommand(LPCMINVOKECOMMANDINFO lpcmi);
+ STDMETHODIMP GetCommandString(
+ UINT_PTR idCmd, UINT uFlags, UINT FAR* reserved,LPSTR pszName,
+ UINT cchMax);
+ STDMETHODIMP HandleMenuMsg(UINT uMsg, WPARAM wParam, LPARAM lParam);
+ STDMETHODIMP HandleMenuMsg2(
+ UINT uMsg, WPARAM wParam, LPARAM lParam, LRESULT* pResult);
+
+ // IShellExtInit
+ STDMETHODIMP Initialize(
+ LPCITEMIDLIST pIDFolder, LPDATAOBJECT pDataObj, HKEY hKeyID);
+};
+
+
+class CShellExtOverlay: public IShellIconOverlayIdentifier
+{
+ ULONG m_cRef;
const char myTortoiseClass;
-
- protected:
- ULONG m_cRef;
- LPDATAOBJECT m_pDataObj;
- LPTSTR* m_ppszFileUserClickedOn; // [MAX_PATH]
- std::vector<std::string> myFiles;
- std::string myFolder;
+public:
+ explicit CShellExtOverlay(char Class);
+ ~CShellExtOverlay();
- void CShellExt::DoHgtk(const std::string&);
+ // IUnknown
+ STDMETHODIMP QueryInterface(REFIID riid, LPVOID FAR *ppv);
+ STDMETHODIMP_(ULONG) AddRef();
+ STDMETHODIMP_(ULONG) Release();
- public:
- static LPCRITICAL_SECTION GetCriticalSection();
- static void IncDllRef();
- static void DecDllRef();
+ // IShellIconOverlayIdentifier
+ STDMETHODIMP GetOverlayInfo(
+ LPWSTR pwszIconFile, int cchMax, int* pIndex, DWORD* pdwFlags);
+ STDMETHODIMP GetPriority(int* pPriority);
+ STDMETHODIMP IsMemberOf(LPCWSTR pwszPath, DWORD dwAttrib);
+};
- explicit CShellExt(char Class);
- ~CShellExt();
-
- // IUnknown
- STDMETHODIMP QueryInterface(REFIID riid, LPVOID FAR *ppv);
- STDMETHODIMP_(ULONG) AddRef();
- STDMETHODIMP_(ULONG) Release();
-
- // IContextMenu3
- STDMETHODIMP QueryContextMenu(
- HMENU hMenu, UINT indexMenu, UINT idCmdFirst, UINT idCmdLast,
- UINT uFlags);
- STDMETHODIMP InvokeCommand(LPCMINVOKECOMMANDINFO lpcmi);
- STDMETHODIMP GetCommandString(
- UINT_PTR idCmd, UINT uFlags, UINT FAR* reserved,LPSTR pszName,
- UINT cchMax);
- STDMETHODIMP HandleMenuMsg(UINT uMsg, WPARAM wParam, LPARAM lParam);
- STDMETHODIMP HandleMenuMsg2(
- UINT uMsg, WPARAM wParam, LPARAM lParam, LRESULT* pResult);
-
- // IShellIconOverlayIdentifier
- STDMETHODIMP GetOverlayInfo(
- LPWSTR pwszIconFile, int cchMax, int* pIndex, DWORD* pdwFlags);
- STDMETHODIMP GetPriority(int* pPriority);
- STDMETHODIMP IsMemberOf(LPCWSTR pwszPath, DWORD dwAttrib);
-
- // IShellExtInit
- STDMETHODIMP Initialize(
- LPCITEMIDLIST pIDFolder, LPDATAOBJECT pDataObj, HKEY hKeyID);
- };
class ThgCriticalSection
|
Loading...