// OliviaTasks.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include "OliviaTasks.h" #include "olv_task.h" #include "OlvTaskProcess.h" #include "utl.h" #include "olv_dll.h" #include "olv.h" #include "_log.h" #include "Msmain.h" #ifdef _DEBUG #define new DEBUG_NEW #endif #include "GeometryFunction.h" #include "StrArray.h" #include "ClienteLicencias.h" #include "_app.h" // The one and only application object //! Clase principal de OliviaTasks /*! * Es la interface entre el AddIn de Olivia y el core de calculos Olivia.dll * */ CWinApp theApp; using namespace std; #define NOMBRE_PRODUCTO "OliviaTasks_3_1" BOOL coge_param(char *cmdline, OlvTaskProcess *task); //! Funcion principal /** * Funcion principal que inicia la aplicacion al ser llamada por el AddIn */ int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow) { int nRetCode = 0; if (!AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0)) { _tprintf(_T("Fatal Error: MFC initialization failed\n")); nRetCode = 1; } else { OlvApp.olv = new COlivia(); Msmain mp; OlvApp.olv->mfrm = ∓ mp.olv = OlvApp.olv; //inicia log------------------------------------------------- C_app* app = C_app::GetApp(); app->archi.rellena_dirs_ejecucion(); #ifdef _DEBUG HWND Stealth; AllocConsole(); Stealth = FindWindowA("ConsoleWindowClass", NULL); ShowWindow(Stealth,SW_SHOWNORMAL); #endif #ifdef _DEBUG system("pause"); #endif //pilla path temporal StrArray buf; strcpy(app->log.nombre,"Olivia"); int nn = Cutl::stringSplit(lpCmdLine,"/path_temp:", &buf)->n_i; if(nn>=2 && Cutl::stringSplit(buf.get(1)," /", &buf)->n_i>nn) strcpy(app->log.path,buf.get(nn)); buf.borra(); //verifica versión----------------------------------- ClienteLicencias lic; char strtem[MAX_PATH]; app->archi.rellena_dirs_ejecucion(); strcpy_s(strtem,MAX_PATH,app->archi.path_ejecutable); Cdir_manager::dir_anterior(strtem); //Cdir_manager::dir_anterior(app->archi.path_ejecutable); sprintf(lic.dirLic,"%s\\", strtem); sprintf(lic.dirTemp,"%s\\", app->log.path); if(!lic.cargaLicencia(NULL,NOMBRE_PRODUCTO)) { C_log::log("_tmain", "Error al comprobar versión"); #ifdef _DEBUG system("pause"); #endif } C_log::log("_tmain","Inicio OliviaTask: %s", lpCmdLine); mp.Despacha_log(); //verifica modo debug---------------------------------------- if(strstr(lpCmdLine,"debug")) { OlvApp.olv->modo_ejec=OLV_EJEC_DEBUG_SIGUE; } char err[1024]; if(!OlvApp.olv->inicia(lpCmdLine, err,1024)) { C_log::log("_tmain",err); } else { if(OlvApp.olv->isDebug) { #ifdef _DEBUG system("pause"); #endif; OlvApp.olv->prueba(); } mp.Despacha(); } C_log::log("_tmain","Final feliz!!"); mp.Despacha_log(); OlvApp.olv->mfrm =NULL; #ifdef _DEBUG system("pause"); #endif } return nRetCode; } //************************************************************************************* /** * Dada la línea de comandos, la divide en los parámetros necesarios * (Funcion para modo multitask) */ BOOL coge_param(char *cmdline, OlvTaskProcess *task) { char *token; int j; //los parámetros son: //\olivia \tipo_oliv \cfg.ini \ip \puerto \toutsock token = strtok(cmdline, TASKS_PARAM_SEP); //Lee parámetros j=0; while (token != NULL) { if(j==0) { //ip strcpy_s(OlvApp.ip,64,token); } else if(j==1) { //puerto OlvApp.port=atoi(token); } else if(j==2) { //ithr task->ithr = atoi(token); } token = strtok(NULL, TASKS_PARAM_SEP); j++; } if(j<3) return FALSE; //no ha leído los param suficientes return TRUE; }