KCloseProgramMgr.cpp
上传用户:dzyhzl
上传日期:2019-04-29
资源大小:56270k
文件大小:3k
源码类别:

模拟服务器

开发平台:

C/C++

  1. //////////////////////////////////////////////////////////////////////////////////////
  2. //
  3. //  FileName    :   KCloseProgramMgr.cpp
  4. //  Version     :   1.0
  5. //  Creater     :   Cheng Bitao
  6. //  Date        :   2002-2-5 11:28:43
  7. //  Comment     :   
  8. //
  9. //////////////////////////////////////////////////////////////////////////////////////
  10. #include "stdafx.h"
  11. #include "KCloseProgramMgr.h"
  12. #include "DataDefine.h"
  13. #include "PublicFun.h"
  14. //----------------------------------------------------------------------------
  15. //   Close program by parameter
  16. //----------------------------------------------------------------------------
  17. KClosedProgram::KClosedProgram(const KProcessInfo ProcessInfo)
  18. {
  19.     m_nCloseFlag = false; 
  20.     m_kProcessInfo = ProcessInfo;
  21.     m_bInitFlag = true;
  22. }
  23. KClosedProgram::~KClosedProgram()
  24. {
  25.     m_bInitFlag = false;
  26.     m_nCloseFlag = false;
  27. }
  28. // Return  1 : Exist process and exit successfully
  29. //         0 : Exist process but exit failed
  30. int KClosedProgram::CloseProgram()
  31. {
  32.     HINSTANCE Hinstance = 0;
  33.     if (!m_bInitFlag)
  34.         return 0;
  35.    
  36.     Hinstance = ShellExecute(
  37.         NULL, 
  38.         "open", 
  39.         m_kProcessInfo.szFileName, 
  40.         m_kProcessInfo.szCloseParam, 
  41.         "", 
  42.         SW_MINIMIZE 
  43.     );
  44.     if ((int)Hinstance <= 32)
  45.         return 0;
  46.     
  47.     return 1;
  48. }
  49. int KClosedProgram::StartProgram()
  50. {
  51.     HINSTANCE Hinstance = 0;
  52.     if ((!m_bInitFlag) || (!m_nCloseFlag))
  53.         return false;
  54.     Hinstance = ShellExecute(
  55.         NULL, 
  56.         "open", 
  57.         m_kProcessInfo.szFileName, 
  58.         m_kProcessInfo.szStartParam, 
  59.         "", 
  60.         SW_MINIMIZE 
  61.     );
  62.     if ((int)Hinstance <= 32)
  63.         return false;
  64.     
  65.     return true;
  66. }
  67. //----------------------------------------------------------------------------
  68. //  ClosedProgram manager
  69. //----------------------------------------------------------------------------
  70. KCloseProgramMgr::KCloseProgramMgr()
  71. {
  72.     m_pClosedProgramList = NULL;
  73. }
  74. KCloseProgramMgr::~KCloseProgramMgr()
  75. {
  76.     PKCLOSEDPROGRAMLIST pCloseProgramList = NULL;
  77.     
  78.     while (m_pClosedProgramList)
  79.     {
  80.         pCloseProgramList = m_pClosedProgramList->pNext;
  81.         KAV_DELETE(m_pClosedProgramList->pClosedProgram);
  82.         KAV_DELETE(m_pClosedProgramList);
  83.         m_pClosedProgramList = pCloseProgramList;
  84.     }
  85. }
  86. int KCloseProgramMgr::AddClosedProgram(KBaseClosedProgram *pClosedProgram)
  87. {  
  88.     int nResult                     = false;
  89.     PKCLOSEDPROGRAMLIST pCloseProgramList  = NULL;
  90.     KAV_PROCESS_ERROR(pClosedProgram);
  91.     
  92.     pCloseProgramList = new KCLOSEDPROTRMLIST;
  93.     KAV_PROCESS_ERROR(pCloseProgramList);
  94.     pCloseProgramList->pClosedProgram = pClosedProgram;
  95.     if (m_pClosedProgramList)
  96.         pCloseProgramList->pNext = m_pClosedProgramList;
  97.     else 
  98.         pCloseProgramList->pNext = NULL;
  99.     m_pClosedProgramList = pCloseProgramList;
  100.     
  101.     nResult = true;
  102. Exit0:
  103.     return nResult;
  104. }
  105. int KCloseProgramMgr::RunAllPrograms()
  106. {
  107.     PKCLOSEDPROGRAMLIST pCloseProgramList = NULL;
  108.     pCloseProgramList = m_pClosedProgramList;
  109.     while (pCloseProgramList)
  110.     {
  111.         if (pCloseProgramList->pClosedProgram)
  112.             pCloseProgramList->pClosedProgram->StartProgram();
  113.         pCloseProgramList = pCloseProgramList->pNext;
  114.     }
  115.     return true;
  116. }