📄 explorerskin.cpp
字号:
// ExplorerSkin.cpp : Implementation of CExplorerSkin
#include "stdafx.h"
#include "IESkin.h"
#include "ExplorerSkin.h"
#include <atlcom.h>
#include <atlconv.h>
/////////////////////////////////////////////////////////////////////////////
// CExplorerSkin
extern CComModule _Module;
HRESULT CExplorerSkin::Initialize(LPCITEMIDLIST pidlFolder,
LPDATAOBJECT pDataObj,
HKEY hProgID)
{
FORMATETC fmt = {CF_HDROP, NULL, DVASPECT_CONTENT, -1, TYMED_HGLOBAL};
STGMEDIUM stg = {TYMED_HGLOBAL};
HDROP hDrop;
if (FAILED(pDataObj->GetData(&fmt, &stg)))
return E_INVALIDARG;
hDrop= (HDROP) GlobalLock(stg.hGlobal);
if (hDrop==NULL)
return E_INVALIDARG;
UINT uNumFiles = DragQueryFile(hDrop, 0xFFFFFFFF, NULL, 0);
//Only one bitmap can be act as skin!
if (uNumFiles==1)
{
HRESULT hr=S_OK;
if (DragQueryFile(hDrop, 0, m_szFile, MAX_PATH)==0)
{
hr=E_INVALIDARG;
}
GlobalUnlock(stg.hGlobal);
ReleaseStgMedium(&stg);
return hr;
}
else
{
GlobalUnlock(stg.hGlobal);
ReleaseStgMedium(&stg);
return E_INVALIDARG;
}
}
HRESULT CExplorerSkin::QueryContextMenu(HMENU hMenu,
UINT uMenuIndex,
UINT uidFirstCmd,
UINT uidLastCmd,
UINT uFlags)
{
if (uFlags & CMF_DEFAULTONLY)
{
return MAKE_HRESULT(SEVERITY_SUCCESS, FACILITY_NULL, 0);
}
InsertMenu(hMenu, uMenuIndex, MF_BYPOSITION, uidFirstCmd, _T("&Select Skin"));
HBITMAP hBitmap;
hBitmap=::LoadBitmap(_Module.GetModuleInstance(), MAKEINTRESOURCE(IDB_MENU_ICON));
::SetMenuItemBitmaps(hMenu, uMenuIndex, MF_BYPOSITION, hBitmap, hBitmap);
return MAKE_HRESULT(SEVERITY_SUCCESS, FACILITY_NULL, 1);
}
HRESULT CExplorerSkin::GetCommandString(UINT idCmd,
UINT uFlags,
UINT* pwReserved,
LPSTR pszName,
UINT cchMax)
{
USES_CONVERSION;
if (idCmd!=0)
return E_INVALIDARG;
if (uFlags & GCS_HELPTEXT)
{
LPCTSTR szText=_T("Change your IE skin by this bitmap.");
if (uFlags & GCS_UNICODE)
lstrcpynW((LPWSTR) pszName, T2CW(szText), cchMax);
else
lstrcpynA(pszName, T2CA(szText), cchMax);
return S_OK;
}
return E_INVALIDARG;
}
HRESULT CExplorerSkin::InvokeCommand(LPCMINVOKECOMMANDINFO pCmdInfo)
{
if (HIWORD(pCmdInfo->lpVerb)!=0)
return E_INVALIDARG;
switch (LOWORD(pCmdInfo->lpVerb))
{
case 0:
{//*******************************
HKEY hKey;
if (RegOpenKeyEx(HKEY_CURRENT_USER,
"Software\\Microsoft\\Internet Explorer\\Toolbar",
0,
KEY_ALL_ACCESS,
&hKey)!=ERROR_SUCCESS)
{
return E_INVALIDARG;
}
RegSetValueEx(hKey, "BackBitmap", 0, REG_SZ, (BYTE*) m_szFile, _tcsclen(m_szFile));
RegCloseKey(hKey);
::MessageBox(NULL, "Open new explorer to see what happend!",
"IESkin",
MB_OK | MB_ICONINFORMATION);
return S_OK;
}
default:
return E_INVALIDARG;
break;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -