ShellExt.h
上传用户:lswyart
上传日期:2008-06-12
资源大小:3441k
文件大小:3k
源码类别:

杀毒

开发平台:

Visual C++

  1. //-----------------------------------------------------------------------------
  2. // Name:        ShellExt.h
  3. // Product:     ClamWin Antivirus
  4. //
  5. // Author:      alch [alch at users dot sourceforge dot net]
  6. //
  7. // Created:     2004/19/03
  8. // Copyright:   Copyright alch (c) 2004
  9. // Licence:     
  10. //   This program is free software; you can redistribute it and/or modify
  11. //   it under the terms of the GNU General Public License as published by
  12. //   the Free Software Foundation; either version 2 of the License, or
  13. //   (at your option) any later version.
  14. // 
  15. //   This program is distributed in the hope that it will be useful,
  16. //   but WITHOUT ANY WARRANTY; without even the implied warranty of
  17. //   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  18. //   GNU General Public License for more details.
  19. // 
  20. //   You should have received a copy of the GNU General Public License
  21. //   along with this program; if not, write to the Free Software
  22. //   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  23. //-----------------------------------------------------------------------------
  24.  
  25. //
  26. // The class ID of this Shell extension class.
  27. //
  28. // class id:  65713842-C410-4f44-8383-BFE01A398C90
  29. //
  30. //                                  
  31. #ifndef _SHELLEXT_H
  32. #define _SHELLEXT_H
  33. #define CF_HDROP        15
  34. // {65713842-C410-4f44-8383-BFE01A398C90}
  35. DEFINE_GUID(CLSID_ShellExtension, 
  36. 0x65713842, 0xc410, 0x4f44, 0x83, 0x83, 0xbf, 0xe0, 0x1a, 0x39, 0x8c, 0x90);
  37. class CShellExtClassFactory : public IClassFactory
  38. {
  39. protected:
  40. ULONG m_cRef; // Object reference count
  41. public:
  42. CShellExtClassFactory();
  43. ~CShellExtClassFactory();
  44. //IUnknown members
  45. STDMETHODIMP QueryInterface(REFIID, LPVOID FAR *);
  46. STDMETHODIMP_(ULONG) AddRef();
  47. STDMETHODIMP_(ULONG) Release();
  48. //IClassFactory members
  49. STDMETHODIMP CreateInstance(LPUNKNOWN, REFIID, LPVOID FAR *);
  50. STDMETHODIMP LockServer(BOOL);
  51. };
  52. typedef CShellExtClassFactory *LPCSHELLEXTCLASSFACTORY;
  53. // this is the actual OLE Shell context menu handler
  54. class CShellExt : public IContextMenu,
  55. IShellExtInit 
  56. {
  57. protected:
  58. ULONG m_cRef; // Object reference count
  59. LPDATAOBJECT m_pDataObj;
  60. public:
  61. CShellExt();
  62. ~CShellExt();
  63. //IUnknown members
  64. STDMETHODIMP QueryInterface(REFIID, LPVOID FAR *);
  65. STDMETHODIMP_(ULONG) AddRef();
  66. STDMETHODIMP_(ULONG) Release();
  67. //IShell members
  68. STDMETHODIMP QueryContextMenu(HMENU hMenu, UINT indexMenu,  UINT idCmdFirst, UINT idCmdLast, UINT uFlags);
  69. STDMETHODIMP InvokeCommand(LPCMINVOKECOMMANDINFO lpcmi);
  70. STDMETHODIMP GetCommandString(UINT idCmd, UINT uFlags, UINT FAR *reserved, LPSTR pszName, UINT cchMax);
  71. //IShellExtInit methods
  72. STDMETHODIMP     Initialize(LPCITEMIDLIST pIDFolder, LPDATAOBJECT pDataObj, HKEY hKeyID);
  73. private:
  74.     BOOL Scan(HWND hwnd);
  75. PTCHAR m_szPath;
  76. };
  77. typedef CShellExt *LPCSHELLEXT;
  78. #endif // _SHELLEXT_H