Index: src/chext/MenuExt.cpp =================================================================== diff -u -N -r2fe97a93f21771d75901d4b6559057d1ea055104 -rb79aca0d66b1084f230022efe39cc89307482e6d --- src/chext/MenuExt.cpp (.../MenuExt.cpp) (revision 2fe97a93f21771d75901d4b6559057d1ea055104) +++ src/chext/MenuExt.cpp (.../MenuExt.cpp) (revision b79aca0d66b1084f230022efe39cc89307482e6d) @@ -22,13 +22,14 @@ #include "..\common\ipcstructs.h" #include "stdio.h" #include "memory.h" -#include "chext-utils.h" #include #include "ShellPathsHelpers.h" #include "../common/TShellExtMenuConfig.h" #include "../libchcore/TSharedMemory.h" #include "../libchcore/TTaskDefinition.h" #include +#include "ShellExtensionVerifier.h" +#include "TLogger.h" // globals static void CutAmpersands(LPTSTR lpszString) @@ -51,7 +52,9 @@ CMenuExt::CMenuExt() : m_piShellExtControl(NULL) { - CoCreateInstance(CLSID_CShellExtControl, NULL, CLSCTX_ALL, IID_IShellExtControl, (void**)&m_piShellExtControl); + HRESULT hResult = CoCreateInstance(CLSID_CShellExtControl, NULL, CLSCTX_ALL, IID_IShellExtControl, (void**)&m_piShellExtControl); + TLogger& rLogger = Logger::get(); + BOOST_LOG_SEV(rLogger, debug) << L"CMenuExt::CMenuExt(): hResult=" << hResult << ", m_piShellExtControl=" << m_piShellExtControl; } CMenuExt::~CMenuExt() @@ -65,40 +68,36 @@ STDMETHODIMP CMenuExt::Initialize(LPCITEMIDLIST pidlFolder, IDataObject* piDataObject, HKEY /*hkeyProgID*/) { - ATLTRACE(_T("[CMenuExt::Initialize] CMenuExt::Initialize(pidlFolder = 0x%p, piDataObject=0x%p)\n"), pidlFolder, piDataObject); + TLogger& rLogger = Logger::get(); + BOOST_LOG_SEV(rLogger, debug) << L"CMenuExt::Initialize()"; if(!pidlFolder && !piDataObject) + { + BOOST_LOG_SEV(rLogger, debug) << L"CMenuExt::Initialize(): Missing both pointers."; return E_INVALIDARG; + } // check options - HRESULT hResult = IsShellExtEnabled(m_piShellExtControl); - if(FAILED(hResult) || hResult == S_FALSE) - return hResult; - - // find ch window - // find ch window - HWND hWnd = ::FindWindow(_T("Copy Handler Wnd Class"), _T("Copy handler")); + HWND hWnd = ShellExtensionVerifier::VerifyShellExt(m_piShellExtControl); if(!hWnd) return S_OK; - hResult = ReadShellConfig(); + HRESULT hResult = ReadShellConfig(); if(SUCCEEDED(hResult)) hResult = m_tShellExtData.GatherDataFromInitialize(pidlFolder, piDataObject); + BOOST_LOG_SEV(rLogger, debug) << L"CMenuExt::Initialize(): hResult=" << hResult; + return hResult; } STDMETHODIMP CMenuExt::QueryContextMenu(HMENU hMenu, UINT indexMenu, UINT idCmdFirst, UINT /*idCmdLast*/, UINT /*uFlags*/) { - ATLTRACE(_T("CMenuExt::QueryContextMenu()\n")); + TLogger& rLogger = Logger::get(); + BOOST_LOG_SEV(rLogger, debug) << L"CMenuExt::QueryContextMenu()"; // check options - HRESULT hResult = IsShellExtEnabled(m_piShellExtControl); - if(FAILED(hResult) || hResult == S_FALSE) - return hResult; - - // find ch window - HWND hWnd = ::FindWindow(_T("Copy Handler Wnd Class"), _T("Copy handler")); + HWND hWnd = ShellExtensionVerifier::VerifyShellExt(m_piShellExtControl); if(!hWnd) return S_OK; @@ -151,19 +150,15 @@ STDMETHODIMP CMenuExt::InvokeCommand(LPCMINVOKECOMMANDINFO lpici) { - ATLTRACE(_T("CMenuExt::InvokeCommand()\n")); + TLogger& rLogger = Logger::get(); + BOOST_LOG_SEV(rLogger, debug) << L"CMenuExt::InvokeCommand()"; // textual verbs are not supported by this extension if(HIWORD(lpici->lpVerb) != 0) return E_FAIL; // check options - HRESULT hResult = IsShellExtEnabled(m_piShellExtControl); - if(FAILED(hResult) || hResult == S_FALSE) - return E_FAIL; // required to process other InvokeCommand handlers. - - // find window - HWND hWnd = ::FindWindow(_T("Copy Handler Wnd Class"), _T("Copy handler")); + HWND hWnd = ShellExtensionVerifier::VerifyShellExt(m_piShellExtControl); if(hWnd == NULL) return E_FAIL; @@ -215,7 +210,8 @@ HRESULT CMenuExt::HandleMenuMsg2(UINT uMsg, WPARAM /*wParam*/, LPARAM lParam, LRESULT* /*plResult*/) { - ATLTRACE(_T("CMenuExt::HandleMenuMsg2()\n")); + TLogger& rLogger = Logger::get(); + BOOST_LOG_SEV(rLogger, debug) << L"CMenuExt::HandleMenuMsg2()"; switch(uMsg) { @@ -273,6 +269,9 @@ HRESULT CMenuExt::DrawMenuItem(LPDRAWITEMSTRUCT lpdis) { + TLogger& rLogger = Logger::get(); + BOOST_LOG_SEV(rLogger, debug) << L"CMenuExt::DrawMenuItem()"; + if(!lpdis) return E_FAIL; @@ -332,13 +331,16 @@ STDMETHODIMP CMenuExt::GetCommandString(UINT_PTR idCmd, UINT uFlags, UINT* /*pwReserved*/, LPSTR pszName, UINT cchMax) { + TLogger& rLogger = Logger::get(); + BOOST_LOG_SEV(rLogger, debug) << L"CMenuExt::GetCommandString()"; + memset(pszName, 0, cchMax); if(uFlags != GCS_HELPTEXTW && uFlags != GCS_HELPTEXTA) return S_OK; // check options - HRESULT hResult = IsShellExtEnabled(m_piShellExtControl); + HRESULT hResult = ShellExtensionVerifier::IsShellExtEnabled(m_piShellExtControl); if(FAILED(hResult)) return hResult; else if(hResult == S_FALSE) @@ -371,7 +373,7 @@ { try { - HWND hWnd = ::FindWindow(_T("Copy Handler Wnd Class"), _T("Copy handler")); + HWND hWnd = ShellExtensionVerifier::VerifyShellExt(m_piShellExtControl); if(hWnd == NULL) return E_FAIL;