SInstance.h
上传用户:lds876
上传日期:2013-05-25
资源大小:567k
文件大小:2k
源码类别:

P2P编程

开发平台:

Visual C++

  1. /*
  2. Module : SINSTANCE.H
  3. Purpose: Defines the interface for an MFC wrapper class to do instance checking
  4. Created: PJN / 29-07-1998
  5. Copyright (c) 1998 - 2003 by PJ Naughter.  
  6. All rights reserved.
  7. Copyright / Usage Details:
  8. You are allowed to include the source code in any product (commercial, shareware, freeware or otherwise) 
  9. when your product is released in binary form. You are allowed to modify the source code in any way you want 
  10. except you cannot modify the copyright details at the top of each module. If you want to distribute source 
  11. code with your application, then you are only allowed to distribute versions released by the author. This is 
  12. to maintain a single distribution point for the source code. 
  13. */
  14. #ifndef __SINSTANCE_H__
  15. #define __SINSTANCE_H__
  16. #ifndef __AFXMT_H__
  17. #pragma message("to avoid this message, you should put afxmt.h in your PCH (normally stdafx.h)")
  18. #include <afxmt.h>
  19. #endif
  20. // custom.
  21. void AppReleaseInstance();
  22. class CInstanceChecker : public CObject
  23. {
  24. public:
  25. //Constructors / Destructors
  26. CInstanceChecker(const CString& sMutexName);
  27. virtual ~CInstanceChecker();
  28. //General functions
  29. void ActivateChecker();
  30. BOOL TrackFirstInstanceRunning();
  31. BOOL PreviousInstanceRunning();
  32. HWND ActivatePreviousInstance(); 
  33. void QuitPreviousInstance(int nExitCode = 0);
  34. protected:
  35. //Virtual methods
  36. virtual CString GetMMFFilename();
  37. virtual HWND GetWindowToTrack();
  38. //Standard non-virtual methods
  39.   void ReleaseLock();
  40. //Data
  41. CMutex       m_instanceDataMutex;
  42. CMutex       m_executeMutex;
  43. CSingleLock* m_pExecuteLock;
  44.   CString      m_sName;
  45. };
  46. #endif //__SINSTANCE_H__