ICopyHook在Win7中使用问题
问题:ICopyHook在Win7中没有起作用。
我的使用:
1.接口继承
class ATL_NO_VTABLE CHookUtil :
public CComObjectRootEx<CComSingleThreadModel>,
public CComCoClass<CHookUtil, &CLSID_HookUtil>,
public ICopyHook, // ICopyHook interface.
2.代码实现
//Unicode Version.
STDMETHODIMP_(UINT) CHookUtil::CopyCallback(HWND hwnd, UINT wFunc, UINT wFlags, LPCWSTR pszSrcFile, DWORD dwSrcAttribs,
LPCWSTR pszDestFile, DWORD dwDestAttribs)
{
::MessageBoxA(NULL, "...............!", "提示信息", MB_OK|MB_ICONINFORMATION);
return IDYES;
}
3.注册表
HKCR
{
PrinterHooker.HookUtil.1 = s 'HookUtil Class'
{
CLSID = s '{A1D1C568-E1FC-4389-B99D-074A11F3B660}'
}
PrinterHooker.HookUtil = s 'HookUtil Class'
{
CLSID = s '{A1D1C568-E1FC-4389-B99D-074A11F3B660}'
CurVer = s 'PrinterHooker.HookUtil.1'
}
NoRemove CLSID
{
ForceRemove {A1D1C568-E1FC-4389-B99D-074A11F3B660} = s 'HookUtil Class'
{
ProgID = s 'PrinterHooker.HookUtil.1'
VersionIndependentProgID = s 'PrinterHooker.HookUtil'
ForceRemove 'Programmable'
InprocServer32 = s '%MODULE%'
{
val ThreadingModel = s 'Apartment'
}
val AppID = s '%APPID%'
'TypeLib' = s '{8BA322D3-2632-4124-A1FF-C0E60B4B4656}'
}
}
Printers
{
ShellEx
{
CopyHookHandlers
{
PrinterHooker = s '{A1D1C568-E1FC-4389-B99D-074A11F3B660}'
}
}
}
}
HKLM
{
NoRemove Software
{
NoRemove Microsoft
{
NoRemove Windows
{
NoRemove CurrentVersion
{
NoRemove 'Shell Extensions'
{
NoRemove Approved
{
val '{A1D1C568-E1FC-4389-B99D-074A11F3B660}' = s 'PrinterHooker'
}
}
}
}
}
}
}