#include "StdAfx.h" #include "olv_tasks.h" #include #include #include "olv_tasks_def.h" #include "olv.h" #include "sock_task.h" #include "StrArray.h" #include "dir_manager.h" Colv_tasks::Colv_tasks(COlivia *ool) { olv = ool; path_ang[0]=path_cconj[0]=file_iaso[0]=path_temp[0]=0; } Colv_tasks::~Colv_tasks(void) { } //************************************************************************************* /* * Arranca una aplicación */ BOOL Colv_tasks::lanza_app(char *appName, char *comline) { // additional information STARTUPINFO si; PROCESS_INFORMATION pi; BOOL is_alive=FALSE; // set the size of the structures ZeroMemory( &si, sizeof(si) ); si.cb = sizeof(si); ZeroMemory( &pi, sizeof(pi) ); // start the program up CreateProcess( appName, // the path comline, // Command line NULL, // Process handle not inheritable NULL, // Thread handle not inheritable FALSE, // Set handle inheritance to FALSE 0, // No creation flags NULL, // Use parent's environment block NULL, // Use parent's starting directory &si, // Pointer to STARTUPINFO structure &pi // Pointer to PROCESS_INFORMATION structure (removed extra parentheses) ); //check is alive DWORD lpExitCode; GetExitCodeProcess(pi.hProcess,&lpExitCode); is_alive=(lpExitCode==STILL_ACTIVE); // Close process and thread handles. CloseHandle( pi.hProcess ); CloseHandle( pi.hThread ); return is_alive; } //************************************************************************************* /* * Consigue el dir de una dll */ void Colv_tasks::get_dll_dir(char *dlldir) { char path[MAX_PATH]; HMODULE hm = NULL; path[0]=0; hm=GetModuleHandle(OLV_DLL_NAME); if (GetModuleFileName(hm, path, sizeof(path)) == 0) { int ret = GetLastError(); fprintf(stderr, "GetModuleFileName failed, error = %d\n", ret); } strcpy_s(dlldir,MAX_PATH,path); } //************************************************************************************* /* * Inicializa la ruta de los dirs */ void Colv_tasks::inidirs( char *path_temp ) { char st1[MAX_PATH]; strcpy_s(st1,MAX_PATH,path_temp); if(path_temp[strlen(path_temp)-1]=='\\') { st1[strlen(st1)-1]=0; } sprintf_s(path_cconj,MAX_PATH,"%s\\%s\\",st1,TASKS_NOMB_COSTCONJ); sprintf_s(path_costamb,MAX_PATH,"%s\\%s\\",st1,TASKS_NOMB_COSTAMB); sprintf_s(path_ang,MAX_PATH,"%s\\%s\\",st1,TASKS_NOMB_COSTANG); sprintf_s(file_iaso,MAX_PATH,"%s\\%s.%s",st1,TASKS_NOMB_IASO,TASKS_EXT_MAT); strcpy_s(this->path_temp,MAX_PATH,st1); Cdir_manager dm; dm.crea_dir(st1); dm.crea_dir(path_cconj); dm.crea_dir(path_costamb); dm.crea_dir(path_ang); } //************************************************************************************* float minFloat(float a, float b) { return min(a,b); } //************************************************************************************* BOOL Colv_tasks::lee_cost_amb(Matrix2d &cost_amb) { class floatMinCom: public ComClasFunction { public: floatMinCom(){} virtual float comp(float a, float b) { return min(a, b); } }; floatMinCom ccom; StrArray files; //pilla archivos----------------------- if(!Cdir_manager::listar(path_costamb, &files)) return FALSE; char *f; for (int i = 0; ipirate_soc = pirate; soc->olv = olv; return soc; } //#endif