dllregshex.h
上传用户:sencon168
上传日期:2007-01-04
资源大小:22k
文件大小:2k
源码类别:

Shell编程

开发平台:

Visual C++

  1. //
  2. // CLSID: 25D84CB0-7345-11d3-A4A1-0080C8ECFED4
  3. //
  4.       
  5. #ifndef __NTSrv_ShellExtension_Defined__
  6. #define __NTSrv_ShellExtension_Defined__
  7. #pragma data_seg(".text")
  8. #include <objbase.h>
  9. #define INITGUID
  10. #include <initguid.h>
  11. #include <shlobj.h>
  12. #include <shlguid.h>
  13. #pragma data_seg()
  14. //
  15. // Operations.
  16. //
  17. #define REGDLL_INSTALL 0
  18. #define REGDLL_UNINSTALL 1
  19. //
  20. // Factory
  21. //
  22. class CDllRegSxClassFactory : public IClassFactory
  23. {
  24. protected:
  25. ULONG m_cRef;
  26. public:
  27. CDllRegSxClassFactory();
  28. ~CDllRegSxClassFactory();
  29. public:
  30. STDMETHODIMP QueryInterface(REFIID, LPVOID FAR *);
  31. STDMETHODIMP_(ULONG) AddRef();
  32. STDMETHODIMP_(ULONG) Release();
  33. STDMETHODIMP CreateInstance(LPUNKNOWN, REFIID, LPVOID FAR *);
  34. STDMETHODIMP LockServer(BOOL);
  35. };
  36. typedef CDllRegSxClassFactory *LPCSHELLEXTCLASSFACTORY;
  37. //
  38. // Shell extension. Must implement IContextMenu (2, 3) and IShellExtInit.
  39. //
  40. class CShellExt : 
  41. public 
  42. IContextMenu, 
  43. IShellExtInit
  44. {
  45. protected:
  46. ULONG m_cRef;
  47. LPDATAOBJECT m_pDataObj;
  48. char m_szFileUserClickedOn[MAX_PATH];
  49. protected:
  50. STDMETHODIMP DoInstall(HWND hParent, LPCSTR pszWorkingDir, LPCSTR pszCmd, LPCSTR pszParam, int iShowCmd);
  51. STDMETHODIMP DoUninstall(HWND hParent, LPCSTR pszWorkingDir, LPCSTR pszCmd, LPCSTR pszParam, int iShowCmd);
  52. STDMETHODIMP DoAbout(HWND hParent, LPCSTR pszWorkingDir, LPCSTR pszCmd, LPCSTR pszParam, int iShowCmd);
  53. public:
  54. STDMETHODIMP _GetFullFileName(/*LPSTR lpszName*/);
  55. STDMETHODIMP _DoRegisterJob(HWND hParent, LPCSTR pszWorkingDir, LPCSTR pszCmd, LPCSTR pszParam, 
  56. int iShowCmd, const int cintOpCode = REGDLL_INSTALL);
  57. public:
  58. CShellExt();
  59. ~CShellExt();
  60. // IUnknown
  61. STDMETHODIMP QueryInterface(REFIID riid, LPVOID FAR *ppv);
  62. STDMETHODIMP_(ULONG) AddRef();
  63. STDMETHODIMP_(ULONG) Release();
  64. // IContextMenu
  65. STDMETHODIMP QueryContextMenu(HMENU hMenu, UINT indexMenu, UINT idCmdFirst, UINT idCmdLast, UINT uFlags);
  66. STDMETHODIMP InvokeCommand(LPCMINVOKECOMMANDINFO lpcmi);
  67. STDMETHODIMP GetCommandString(UINT idCmd, UINT uFlags, UINT FAR *reserved, LPSTR pszName, UINT cchMax);
  68. // IShellExtInit
  69. STDMETHODIMP     Initialize(LPCITEMIDLIST pIDFolder, LPDATAOBJECT pDataObj, HKEY hKeyID);
  70. };
  71. typedef CShellExt *LPCSHELLEXT;
  72. #endif