123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562 |
- // YAServer.cpp : 定义应用程序的类行为。
- //
- #include "stdafx.h"
- #include "YAServer.h"
- #include "YAServerDlg.h"
- #include "def.h"
- #include "INIFILE.h"
- #include "Functions/Functions.h"
- #include "minidupm.h"
- #include "tlhelp32.h"
- #include "ProcessRemodule.h"
- #include "log_process_module.h"
- #include "./system_basic_info/SystemAnalysis.h"
- #include "./debug_server/debug_server_socket.h"
- #pragma warning(disable: 4005)
- extern int debug_server_init(void);
- // CYAServerApp
- BEGIN_MESSAGE_MAP(CYAServerApp, CWinApp)
- ON_COMMAND(ID_HELP, &CWinApp::OnHelp)
- END_MESSAGE_MAP()
- // CYAServerApp 构造
- CYAServerApp::CYAServerApp()
- {
- // 支持重新启动管理器
- m_dwRestartManagerSupportFlags = AFX_RESTART_MANAGER_SUPPORT_RESTART;
- // TODO: 在此处添加构造代码,
- // 将所有重要的初始化放置在 InitInstance 中
- }
- // 唯一的一个 CYAServerApp 对象
- CYAServerApp theApp;
- //HINSTANCE g_hResOld; // 旧的资源句柄
- //HINSTANCE g_hDll; // DLL资源句柄
- // CYAServerApp 初始化
- BOOL CYAServerApp::InitInstance()
- {
- // 如果一个运行在 Windows XP 上的应用程序清单指定要
- // 使用 ComCtl32.dll 版本 6 或更高版本来启用可视化方式,
- //则需要 InitCommonControlsEx()。否则,将无法创建窗口。
- //避免启动两个采集程序
- CreateMutex(NULL, FALSE, _T("MyMux"));
- if(GetLastError() == ERROR_ALREADY_EXISTS){
- HWND hWnd = ::FindWindow(NULL, _T("永安信通数据采集系统"));
- ::PostMessage(hWnd, WM_QUIT, 0, 0);
- //caption改为你窗口的具体caption
- //::ShowWindow(hWnd,SW_SHOW);
- //::SetForegroundWindow(hWnd); // 激活
- //return FALSE;
- }
- INITCOMMONCONTROLSEX InitCtrls;
- InitCtrls.dwSize = sizeof(InitCtrls);
- // 将它设置为包括所有要在应用程序中使用的
- // 公共控件类。
- InitCtrls.dwICC = ICC_WIN95_CLASSES;
- InitCommonControlsEx(&InitCtrls);
- SetUnhandledExceptionFilter(ExceptionFilter);
- CWinApp::InitInstance();
-
- AfxEnableControlContainer();
- // 创建 shell 管理器,以防对话框包含
- // 任何 shell 树视图控件或 shell 列表视图控件。
- CShellManager *pShellManager = new CShellManager;
- // 标准初始化
- // 如果未使用这些功能并希望减小
- // 最终可执行文件的大小,则应移除下列
- // 不需要的特定初始化例程
- // 更改用于存储设置的注册表项
- // TODO: 应适当修改该字符串,
- // 例如修改为公司或组织名
- SetRegistryKey(_T("应用程序向导生成的本地应用程序"));
- init_param();
- load_conf();
-
- service_task_init();
- debug_server_init();
- debug_print_syslog(0, "Service thread, SQL thread, log thread Started.");
- //debug_server_process_thread_init();
- //g_hResOld = AfxGetResourceHandle();
- //AfxSetResourceHandle(g_hDll);
- CYAServerDlg dlg;
- m_pMainWnd = &dlg;
- INT_PTR nResponse = dlg.DoModal();
- if (nResponse == IDOK)
- {
- // TODO: 在此放置处理何时用
- // “确定”来关闭对话框的代码
- }
- else if (nResponse == IDCANCEL)
- {
- // TODO: 在此放置处理何时用
- // “取消”来关闭对话框的代码
- }
- // 删除上面创建的 shell 管理器。
- if (pShellManager != NULL)
- {
- delete pShellManager;
- }
- //AfxSetResourceHandle(g_hResOld);
- // 由于对话框已关闭,所以将返回 FALSE 以便退出应用程序,
- // 而不是启动应用程序的消息泵。
- return FALSE;
- }
- /*
- * 写入配置文件
- *
- * param
- * section ------ 字段名
- * key ------ 键值
- * value ------ 值
- *
- * 例子:
- * [DB]
- * user=root
- * DB为字段名, user为键值,root为键值
- *
- *
- * return
- * 无
- *
- */
- void CYAServerApp::writeini( string section, string key, string value )
- {
- WritePrivateProfileStringA(section.c_str(), key.c_str(), value.c_str(), FILEPATH_SERVER_CONFIG);
- }
- /*
- * 载入主数据库配置和备用数据库配置
- *
- * param
- * 无
- *
- * return
- * 无
- *
- */
- void CYAServerApp::load_db_conf()
- {
- IniFile ini;
- if(ini.open(FILEPATH_SERVER_CONFIG)){
- //主数据库ip
- dbhost = ini.read(CONF_SECT_DB, CONF_DB_KEY_HOST);
- //主数据库用户名
- dbuser = ini.read(CONF_SECT_DB, CONF_DB_KEY_USER);
- //主数据库密码
- dbpwd = ini.read(CONF_SECT_DB, CONF_DB_KEY_PWD);
- //主数据库数据库名
- dbname = ini.read(CONF_SECT_DB, CONF_DB_KEY_DBNAME);
- //是否使用备份数据库
- dbbackup = ini.read(CONF_SECT_DB, CONF_DB_KEY_DB_BACKUP);
- //主数据库服务器的端口
- dbport = atoi(ini.read(CONF_SECT_DB, CONF_DB_KEY_PORT).c_str());
- //主数据库的编码
- dbencoding = ini.read(CONF_SECT_DB, CONF_DB_KEY_ENCODING);
- //备用数据库ip
- dbhost_bk = ini.read(CONF_SECT_DB_BK, CONF_DB_KEY_HOST);
- //备用数据库用户名
- dbuser_bk = ini.read(CONF_SECT_DB_BK, CONF_DB_KEY_USER);
- //备用数据库密码
- dbpwd_bk = ini.read(CONF_SECT_DB_BK, CONF_DB_KEY_PWD);
- //备用数据库数据库名称
- dbname_bk = ini.read(CONF_SECT_DB_BK, CONF_DB_KEY_DBNAME);
- //备用数据库端口
- dbport_bk = atoi(ini.read(CONF_SECT_DB_BK, CONF_DB_KEY_PORT).c_str());
- //备用数据库编码
- dbencoding_bk = ini.read(CONF_SECT_DB_BK, CONF_DB_KEY_ENCODING);
- }
- }
- /*
- * 保存主数据库配置和备用数据库配置到配置文件
- *
- * param
- * 无
- *
- * return
- * 无
- *
- */
- void CYAServerApp::save_db_conf()
- {
- char t[20];
- string s;
- sprintf_s(t, "%d", dbport);
- s = t;
- writeini(CONF_SECT_DB, CONF_DB_KEY_HOST, dbhost);
- writeini(CONF_SECT_DB, CONF_DB_KEY_USER, dbuser);
- writeini(CONF_SECT_DB, CONF_DB_KEY_PWD, dbpwd);
- writeini(CONF_SECT_DB, CONF_DB_KEY_DBNAME, dbname);
- writeini(CONF_SECT_DB, CONF_DB_KEY_DB_BACKUP, dbbackup);
- writeini(CONF_SECT_DB, CONF_DB_KEY_ENCODING, dbencoding);
- writeini(CONF_SECT_DB, CONF_DB_KEY_PORT, s);
- sprintf_s(t, "%d", dbport_bk);
- s = t;
- writeini(CONF_SECT_DB_BK, CONF_DB_KEY_HOST, dbhost_bk);
- writeini(CONF_SECT_DB_BK, CONF_DB_KEY_USER, dbuser_bk);
- writeini(CONF_SECT_DB_BK, CONF_DB_KEY_PWD, dbpwd_bk);
- writeini(CONF_SECT_DB_BK, CONF_DB_KEY_DBNAME, dbname_bk);
- writeini(CONF_SECT_DB_BK, CONF_DB_KEY_ENCODING, dbencoding_bk);
- writeini(CONF_SECT_DB_BK, CONF_DB_KEY_PORT, s);
- }
- /*
- * 从配置文件载入系统配置
- *
- * param
- * 无
- *
- * return
- * 无
- *
- */
- void CYAServerApp::load_sys_conf()
- {
- locate_type = 0;
- IniFile ini;
- send_json_postion = 1000;
- send_json_counting = 5000;
- send_json_alarm = 5000;
- warning_point_alarm = 10000;
- send_json_device = 10000;
- ws_connect_interval = 2000;
- time_send_call = 5000;
- time_send_help = 5000;
- send_json_drivingface = 30000;
- send_json_leader = 1800000; //30 * 60 * 1000;
- load_leader = 14400000; // 4 * 60 * 60 * 1000
- cal_vehicle_meeting = 5000;
- tcp_port = PORT_SERVER_MASTER;
- send_sync_time = 600000;
- shutdown_timeout_threshold = 480;
- vibrate_threshold = 50;
- if(ini.open(FILEPATH_SERVER_CONFIG)){
- ws_url = ini.read(CONF_SECT_SERVER_SETTING, CONF_SERVER_WS_URL);
- ws_url_bk = ini.read(CONF_SECT_SERVER_SETTING, CONF_SERVER_WS_URL_BK);
- tcp_host = ini.read(CONF_SECT_SERVER_SETTING, CONF_SERVER_TCP_HOST);
- tcp_port = atoi(ini.read(CONF_SECT_SERVER_SETTING, CONF_SERVER_TCP_PORT).c_str());
- use_filter = (atoi(ini.read(CONF_SECT_SERVER_SETTING, CONF_SERVER_USE_FILTER).c_str()) == 0 ? FALSE : TRUE);
- use_filter_odd = (atoi(ini.read(CONF_SECT_SERVER_SETTING, CONF_SERVER_USE_FILTER_ODD).c_str()) == 0 ? FALSE : TRUE);
- recon_server = atoi(ini.read(CONF_SECT_SERVER_SETTING, CONF_SERVER_RECON_SERVER).c_str());
- recon_db = atoi(ini.read(CONF_SECT_SERVER_SETTING, CONF_SERVER_RECON_DB).c_str());
- reader_lost = atoi(ini.read(CONF_SECT_SERVER_SETTING, CONF_SERVER_READER_LOST).c_str());
- card_lost = atoi(ini.read(CONF_SECT_SERVER_SETTING, CONF_SERVER_CARD_LOST).c_str());
- timing_interval = atoi(ini.read(CONF_SECT_SERVER_SETTING, CONF_SERVER_TIMING_INTERVAL).c_str());
- sampling_interval = atof(ini.read(CONF_SECT_SERVER_SETTING, CONF_SERVER_SAMPLING_INTERVAL).c_str());
- coor_error = atof(ini.read(CONF_SECT_SERVER_SETTING, CONF_SERVER_COORDINATE_ERROR).c_str());
- ranging_error = atof(ini.read(CONF_SECT_SERVER_SETTING, CONF_SERVER_RANGING_ERROR).c_str());
- move_error = atof(ini.read(CONF_SECT_SERVER_SETTING, CONF_SERVER_MOVING_ERROR).c_str());
- z_offset = atof(ini.read(CONF_SECT_SERVER_SETTING, CONF_SERVER_Z_OFFSET).c_str());
- locate_type = atoi(ini.read(CONF_SECT_SERVER_SETTING, CONF_SERVER_LOCATE_TYPE).c_str());
- heart_interval = atoi(ini.read(CONF_SECT_SERVER_SETTING,CONF_SERVER_HEART_INTERVAL).c_str());
- send_json_postion = atoi(ini.read(CONF_SECT_SERVER_SETTING, CONF_SEND_JSON_POSION).c_str());
- send_json_counting = atoi(ini.read(CONF_SECT_SERVER_SETTING, CONF_SEND_JSON_COUNTING).c_str());
- send_json_alarm = atoi(ini.read(CONF_SECT_SERVER_SETTING, CONF_SEND_JSON_ALARM).c_str());
- warning_point_alarm = atoi(ini.read(CONF_SECT_SERVER_SETTING,CONF_WARNING_POINT_ALARM).c_str());
- send_json_device = atoi(ini.read(CONF_SECT_SERVER_SETTING, CONF_SEND_JSON_DEVICE).c_str());
- send_json_drivingface = atoi(ini.read(CONF_SECT_SERVER_SETTING, CONF_SEND_JSON_DRIVINGFACE).c_str());
- send_json_leader = atoi(ini.read(CONF_SECT_SERVER_SETTING, CONF_SEND_JSON_LEADER).c_str());
- load_leader = atoi(ini.read(CONF_SECT_SERVER_SETTING, CONF_LOAD_LEADER).c_str());
- cal_vehicle_meeting = atoi(ini.read(CONF_SECT_SERVER_SETTING, CONF_CAL_VEHICLE_MEETING).c_str());
- ws_connect_interval = atoi(ini.read(CONF_SECT_SERVER_SETTING, CONF_SEND_WS_CONNECT_INTERVAL).c_str());
- time_send_call = atoi(ini.read(CONF_SECT_SERVER_SETTING, CONF_SEND_CALLINFO_INTERVAL).c_str());
- time_send_help = atoi(ini.read(CONF_SECT_SERVER_SETTING, CONF_SEND_HELPINFO_INTERVAL).c_str());
- send_sync_time = atoi(ini.read(CONF_SECT_SERVER_SETTING,CONF_SEND_SYNC_TIME_INTERVAL).c_str());
- shutdown_timeout_threshold = atoi(ini.read(CONF_SECT_SERVER_SETTING, CONF_SHUTDOWN_TIMEOUT_THRESHOLD).c_str());
- vibrate_threshold = atoi(ini.read(CONF_SECT_SERVER_SETTING, CONF_VIBRATE_THRESHOLD).c_str());
- }
- }
- /*
- * 保存系统设置到配置文件
- *
- * param
- * 无
- *
- * return
- * 无
- *
- */
- void CYAServerApp::save_sys_conf()
- {
- char t[20];
- string s;
- writeini(CONF_SECT_SERVER_SETTING, CONF_SERVER_WS_URL, ws_url);
- writeini(CONF_SECT_SERVER_SETTING, CONF_SERVER_WS_URL_BK, ws_url_bk);
- writeini(CONF_SECT_SERVER_SETTING, CONF_SERVER_USE_FILTER, use_filter ? "1" : "0");
- sprintf_s(t, "%d", recon_server);
- s = t;
- writeini(CONF_SECT_SERVER_SETTING, CONF_SERVER_RECON_SERVER, s);
- sprintf_s(t, "%d", recon_db);
- s = t;
- writeini(CONF_SECT_SERVER_SETTING, CONF_SERVER_RECON_DB, s);
- sprintf_s(t, "%d", reader_lost);
- s = t;
- writeini(CONF_SECT_SERVER_SETTING, CONF_SERVER_READER_LOST, s);
- sprintf_s(t, "%d", card_lost);
- s = t;
- writeini(CONF_SECT_SERVER_SETTING, CONF_SERVER_CARD_LOST, s);
- sprintf_s(t, "%d", timing_interval);
- s = t;
- writeini(CONF_SECT_SERVER_SETTING, CONF_SERVER_TIMING_INTERVAL, s);
- sprintf_s(t, "%f", sampling_interval);
- s = t;
- writeini(CONF_SECT_SERVER_SETTING, CONF_SERVER_SAMPLING_INTERVAL, s);
- sprintf_s(t, "%f", z_offset);
- s = t;
- writeini(CONF_SECT_SERVER_SETTING, CONF_SERVER_Z_OFFSET, s);
- sprintf_s(t, "%f", coor_error);
- s = t;
- writeini(CONF_SECT_SERVER_SETTING, CONF_SERVER_COORDINATE_ERROR, s);
- sprintf_s(t, "%f", ranging_error);
- s = t;
- writeini(CONF_SECT_SERVER_SETTING, CONF_SERVER_RANGING_ERROR, s);
- sprintf_s(t, "%f", move_error);
- s = t;
- writeini(CONF_SECT_SERVER_SETTING, CONF_SERVER_MOVING_ERROR, s);
- sprintf_s(t, "%d", tcp_port);
- s = t;
- writeini(CONF_SECT_SERVER_SETTING, CONF_SERVER_TCP_PORT, s);
- }
- /*
- * 从配置文件载入日志配置
- *
- * param
- * 无
- *
- * return
- * 无
- *
- */
- void CYAServerApp::load_log_conf()
- {
- IniFile ini;
- if(ini.open(FILEPATH_SERVER_CONFIG)){
- //系统状态
- log_sys_status = (atoi(ini.read(CONF_SECT_SERVER_LOG, CONF_LOG_SYS_STATUS).c_str()) == 0 ? FALSE : TRUE);
- //原始数据,底层数据
- log_raw_data = (atoi(ini.read(CONF_SECT_SERVER_LOG, CONF_LOG_RAW_DATA).c_str()) == 0 ? FALSE : TRUE);
- //格式化数据
- log_parse_data = (atoi(ini.read(CONF_SECT_SERVER_LOG, CONF_LOG_PARSE_DATA).c_str()) == 0 ? FALSE : TRUE);
- //发送数据包
- log_send_package = (atoi(ini.read(CONF_SECT_SERVER_LOG, CONF_LOG_SEND_EVENT).c_str()) == 0 ? FALSE : TRUE);
- //接收数据包
- log_recv_package = (atoi(ini.read(CONF_SECT_SERVER_LOG, CONF_LOG_REV_EVENT).c_str()) == 0 ? FALSE : TRUE);
- //定位数据
- log_locate_data = (atoi(ini.read(CONF_SECT_SERVER_LOG, CONF_LOG_LOCATE_DATA).c_str()) == 0 ? FALSE : TRUE);
- }
- }
- /*
- * 保存日志设置
- *
- * param
- * 无
- *
- * return
- * 无
- *
- */
- void CYAServerApp::save_log_conf()
- {
- writeini(CONF_SECT_SERVER_LOG, CONF_LOG_SYS_STATUS, log_sys_status ? "1" : "0");
- writeini(CONF_SECT_SERVER_LOG, CONF_LOG_RAW_DATA, log_raw_data ? "1" : "0");
- writeini(CONF_SECT_SERVER_LOG, CONF_LOG_PARSE_DATA, log_parse_data ? "1" : "0");
- writeini(CONF_SECT_SERVER_LOG, CONF_LOG_SEND_EVENT, log_send_package ? "1" : "0");
- writeini(CONF_SECT_SERVER_LOG, CONF_LOG_REV_EVENT, log_recv_package ? "1" : "0");
- writeini(CONF_SECT_SERVER_LOG,CONF_LOG_LOCATE_DATA,log_locate_data ? "1" : "0");
- }
- /*
- * 设置监控服务器句柄以及路径
- *
- * param
- * hwd ------ 主对话框窗口句柄
- *
- * return
- * 无
- *
- */
- void CYAServerApp::set_server_handle(HWND hwd)
- {
- char t[20];
- char szAppdir[MAX_PATH+1] = {0};
- GetModuleFileNameA(NULL, szAppdir , MAX_PATH);
- sprintf_s(t, "%d", DWORD(hwd));
- writeini(CONF_SECT_MONITOR, CONF_MONITOR_SERVER_HANDLE, t);
- writeini(CONF_SECT_MONITOR, CONF_MONITOR_SERVER_PATH, szAppdir);
- }
- /*
- * 从配置文件载入监控配置
- *
- * param
- * 无
- *
- * return
- * 无
- *
- */
- void CYAServerApp::load_monitor_conf()
- {
- IniFile ini;
- if(ini.open(FILEPATH_SERVER_CONFIG)){
- m_hwnd_monitor = HWND(atoi(ini.read(CONF_SECT_MONITOR, CONF_MONITOR_MONITOR_HANDLE).c_str()));
- string path = ini.read(CONF_SECT_MONITOR, CONF_MONITOR_MONITOR_PATH);
- sprintf_s(m_path_monitor.get(), MAX_PATH, "%s", path.c_str());
- //sprintf( m_path_monitor, "%s", path.c_str());
- }
- }
- /*
- * 初始化监视软件路径
- *
- * param
- * 无
- *
- * return
- * 无
- *
- */
- void CYAServerApp::init_param()
- {
- m_path_monitor = nullptr;
- std::unique_ptr<char> tmp(new char[MAX_PATH]);
- m_path_monitor = std::move(tmp);
- memset(m_path_monitor.get(),0,MAX_PATH*sizeof(char));
- }
- /*
- * 保存间隔配置到配置文件
- *
- * param
- * 无
- *
- * return
- * 无
- *
- */
- void CYAServerApp::save_interval_conf()
- {
- char t[20];
- string s;
- sprintf_s(t, "%d", send_json_postion);
- s = t;
- writeini(CONF_SECT_SERVER_SETTING, CONF_SEND_JSON_POSION, s);
- sprintf_s(t, "%d", send_json_counting);
- s = t;
- writeini(CONF_SECT_SERVER_SETTING, CONF_SEND_JSON_COUNTING, s);
- sprintf_s(t, "%d", send_json_alarm);
- s = t;
- writeini(CONF_SECT_SERVER_SETTING, CONF_SEND_JSON_ALARM, s);
- sprintf_s(t, "%d", send_json_device);
- s = t;
- writeini(CONF_SECT_SERVER_SETTING, CONF_SEND_JSON_DEVICE, s);
- }
- void CYAServerApp::load_reader_conf()
- {
- IniFile ini;
- if(ini.open(FILEPATH_SERVER_CONFIG)){
- //分站发送时间消息
- reader_interval_time = atoi(ini.read(CONF_SECT_READER, CONF_READER_INTERVAL_TIME).c_str());
- }
- }
- void CYAServerApp::save_reader_conf()
- {
- char t[20] = {0};
- string s;
- sprintf_s(t, "%d", reader_interval_time);
- s = t;
- writeini(CONF_SECT_READER, CONF_READER_INTERVAL_TIME, s);
- }
- BOOL CYAServerApp::KillProcessFromName(CString strProcessName)
- {
- //创建进程快照(TH32CS_SNAPPROCESS表示创建所有进程的快照)
- HANDLE hSnapShot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
- //PROCESSENTRY32进程快照的结构体
- PROCESSENTRY32 pe;
- //实例化后使用Process32First获取第一个快照的进程前必做的初始化操作
- pe.dwSize = sizeof(PROCESSENTRY32);
- //下面的IF效果同:
- //if(hProcessSnap == INVALID_HANDLE_VALUE) 无效的句柄
- if(!Process32First(hSnapShot,&pe))
- {
- return FALSE;
- }
- //将字符串转换为小写
- strProcessName.MakeLower();
- //如果句柄有效 则一直获取下一个句柄循环下去
- while (Process32Next(hSnapShot,&pe))
- {
- //pe.szExeFile获取当前进程的可执行文件名称
- CString scTmp = pe.szExeFile;
- //将可执行文件名称所有英文字母修改为小写
- scTmp.MakeLower();
- //比较当前进程的可执行文件名称和传递进来的文件名称是否相同
- //相同的话Compare返回0
- if(!scTmp.Compare(strProcessName))
- {
- //从快照进程中获取该进程的PID(即任务管理器中的PID)
- DWORD dwProcessID = pe.th32ProcessID;
- HANDLE hProcess = ::OpenProcess(PROCESS_TERMINATE,FALSE,dwProcessID);
- ::TerminateProcess(hProcess,0);
- CloseHandle(hProcess);
- return TRUE;
- }
- scTmp.ReleaseBuffer();
- }
- strProcessName.ReleaseBuffer();
- return FALSE;
- }
- void CYAServerApp::load_conf()
- {
- load_db_conf();
- load_sys_conf();
- load_log_conf();
- load_reader_conf();
- }
|