MFCService.cpp 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157
  1. // MFCService.cpp : 定义应用程序的类行为。
  2. //
  3. #include "stdafx.h"
  4. #include "MFCService.h"
  5. #include "MFCServiceDlg.h"
  6. #include ".\mfcservice.h"
  7. #include "SysLib.h"
  8. DWORD dwThreadID;
  9. //HINSTANCE g_hLangDLL;
  10. #ifdef _DEBUG
  11. #define new DEBUG_NEW
  12. #endif
  13. // CMFCServiceApp
  14. BEGIN_MESSAGE_MAP(CMFCServiceApp, CWinApp)
  15. ON_COMMAND(ID_HELP, CWinApp::OnHelp)
  16. END_MESSAGE_MAP()
  17. // CMFCServiceApp 构造
  18. CMFCServiceApp::CMFCServiceApp()
  19. {
  20. // TODO: 在此处添加构造代码,
  21. // 将所有重要的初始化放置在 InitInstance 中
  22. }
  23. // 唯一的一个 CMFCServiceApp 对象
  24. CMFCServiceApp theApp;
  25. // CMFCServiceApp 初始化
  26. BOOL CMFCServiceApp::InitInstance()
  27. {
  28. // 如果一个运行在 Windows XP 上的应用程序清单指定要
  29. // 使用 ComCtl32.dll 版本 6 或更高版本来启用可视化方式,
  30. //则需要 InitCommonControls()。否则,将无法创建窗口。
  31. CString strPath;
  32. TCHAR szFull[_MAX_PATH];
  33. TCHAR szDrive[_MAX_DRIVE];
  34. TCHAR szDir[_MAX_DIR];
  35. ::GetModuleFileName(NULL, szFull, sizeof(szFull)/sizeof(TCHAR));
  36. _tsplitpath(szFull, szDrive, szDir, NULL, NULL);
  37. _tcscpy(szFull, szDrive);
  38. _tcscat(szFull, szDir);
  39. strPath = CString(szFull);
  40. #if 0 // 是否使用默认
  41. LOG4C_INIT_DEFAULT();
  42. #else
  43. char szFileName[MAX_PATH];
  44. sprintf(szFileName, "%s\\log4crc", strPath);
  45. ///设置日志配置文件名
  46. LOG4C_PARAM_CFG_FILE_NAME(szFileName);
  47. ///设置日志级别
  48. LOG4C_PARAM_LOG_LEVEL("unknown");
  49. ///设置日志文件大小
  50. LOG4C_PARAM_LOG_FILE_SIZE(10240);
  51. ///设置生成日志文件个数,达到最大个数将自动覆盖最旧的日志
  52. LOG4C_PARAM_LOG_FILE_NUM(5);
  53. ///设置每次记录日志都重新读取日志配置文件
  54. LOG4C_PARAM_REREAD_LOG_CFG_FILE(1);
  55. ///带参数日志模块初始化,以上所有设置了的参数都将生效,没有设置的采用缺省值
  56. LOG4C_INIT_WITH_PARAM();
  57. #endif
  58. InitCommonControls();
  59. CWinApp::InitInstance();
  60. AfxEnableControlContainer();
  61. /************************************************************************/
  62. /* +StartService+ */
  63. /************************************************************************/
  64. HANDLE hMutex;
  65. CString StrName="Zero.t Service";
  66. hMutex=OpenMutex(MUTEX_ALL_ACCESS,FALSE,StrName);
  67. if(hMutex==NULL)
  68. {
  69. hMutex=::CreateMutex(NULL,NULL,StrName);
  70. }
  71. else
  72. {
  73. //MessageBox(NULL,"服务已经打开!","温馨提示",MB_ICONINFORMATION);
  74. return FALSE;
  75. }
  76. // 获取配置文件的配置信息;
  77. GetSysData();
  78. // 获取当前程序主线程ID号;
  79. dwThreadID = ::GetCurrentThreadId();
  80. // 初始化 SOCKET库;
  81. CSocketHandle::InitLibrary( MAKEWORD(2,2) );
  82. //InitIOService();
  83. CHAR strFile[MAX_FILE_LENGTH + 1] = "";
  84. GetResourceString();
  85. /************************************************************************/
  86. /* -StartService- */
  87. /************************************************************************/
  88. // 标准初始化
  89. // 如果未使用这些功能并希望减小
  90. // 最终可执行文件的大小,则应移除下列
  91. // 不需要的特定初始化例程
  92. // 更改用于存储设置的注册表项
  93. // TODO: 应适当修改该字符串,
  94. // 例如修改为公司或组织名
  95. SetRegistryKey(_T("应用程序向导生成的本地应用程序"));
  96. CMFCServiceDlg dlg;
  97. m_pMainWnd = &dlg;
  98. INT_PTR nResponse = dlg.DoModal();
  99. if (nResponse == IDOK)
  100. {
  101. // TODO: 在此放置处理何时用“确定”来关闭
  102. //对话框的代码
  103. }
  104. else if (nResponse == IDCANCEL)
  105. {
  106. // TODO: 在此放置处理何时用“取消”来关闭
  107. //对话框的代码
  108. }
  109. //dlg.ExcuteNofify();
  110. //dlg.ShowWindow(SW_HIDE);
  111. // 由于对话框已关闭,所以将返回 FALSE 以便退出应用程序,
  112. // 而不是启动应用程序的消息泵。
  113. return FALSE;
  114. }
  115. int CMFCServiceApp::ExitInstance()
  116. {
  117. // TODO: 在此添加专用代码和/或调用基类
  118. //UnInitIOService();
  119. LOG4C_FINI();
  120. return CWinApp::ExitInstance();
  121. }