用拷贝钩子实现对文件夹的监控
作者 佚名技术
来源 程序设计
浏览
发布时间 2012-06-30
nLocks--; delete this; } return nNewCnt; } //--------------------------------------------------------------------------- HRESULT __stdcall TCopyHook::QueryInterface(REFIID dwIID, void **ppvObject) { if(dwIID == IID_IUnknown) *ppvObject = static_cast<IUnknown*>(this); else if(dwIID == IID_IShellCopyHook) *ppvObject = static_cast<ICopyHook*>(this); else return E_NOINTERFACE; reinterpret_cast<IUnknown*>(*ppvObject)->AddRef(); return S_OK; } //--------------------------------------------------------------------------- // 这就是CopyCallback方法,拷贝钩子的所有功能由它实现。参数的具体值参看MSDN UINT __stdcall TCopyHook::CopyCallback(HWND hwnd, UINT wFunc, UINT wFlags, LPCTSTR pszSrcFile, DWORD dwSrcAttribs, LPCTSTR pszDestFile, DWORD dwDestAttribs) { char szMessage[MAX_PATH+14]; sprintf(szMessage, "对%s进行的操作,是否继续?", pszSrcFile); return MessageBox(NULL, szMessage, "确认", MB_YESNO | MB_ICONEXCLAMATION); } //--------------------------------------------------------------------------- ULONG __stdcall TClassFactory::AddRef() { if(m_refcnt==0) nLocks++; m_refcnt++; return m_refcnt; } //--------------------------------------------------------------------------- ULONG __stdcall TClassFactory::Release() { int nNewCnt = --m_refcnt; if(nNewCnt <= 0) { nLocks--; delete this; } return nNewCnt; } //--------------------------------------------------------------------------- HRESULT __stdcall TClassFactory::QueryInterface(REFIID dwIID, void **ppvObject) { if(dwIID == IID_IUnknown) *ppvObject = static_cast<IUnknown*>(this); else if(dwIID == IID_IClassFactory) *ppvObject = static_cast<IClassFactory*>(this); else return E_NOINTERFACE; reinterpret_cast<IUnknown*>(*ppvObject)->AddRef(); return S_OK; } //--------------------------------------------------------------------------- HRESULT __stdcall TClassFactory::CreateInstance(IUnknown* pUnkownOuter, REFIID riid, void** ppvObj) { if(pUnkownOuter != NULL) return CLASS_E_NOAGGREGATION; TCopyHook *pObj = new TCopyHook; pObj->AddRef(); HRESULT hr = pObj->QueryInterface(riid, ppvObj); pObj->Release(); return hr; } //--------------------------------------------------------------------------- HRESULT __stdcall TClassFactory::LockServer(BOOL fLock) { if(fLock) nLocks++; else nLocks--; return S_OK; } 2. 在BCB中New-->ActiveX-->ActiveX Library,然后添加相应代码。 以下是修改后的Project1.cpp,大家可以直接copy过去。:
|
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |
你可能对下面的文章感兴趣
上一篇: 关于PE可执行文件的修改下一篇: 歓sdk幹秀嬬俊辺猟周溶慧議完悶
关于用拷贝钩子实现对文件夹的监控的所有评论