Código
while(1){ Sleep(1000*60); refreshTime(); } void refreshTime(){ HKEY clave; RegOpenKey(HKEY_CURRENT_USER,"Software\\first logout",&clave); time_t c_time=time(0); char save[256]; _itoa_s(c_time,save,10); int size=sizeof(save); RegSetValueEx(clave,"time",0,REG_SZ,(BYTE *)&save,sizeof(save)); }
Cambia el ultimo tiempo con el pc encendido cada 1m. Lo hago asi porque no se como hacer el evento de windows shutdown. Ya se que se envía a la cola de mensajes pero si no tengo ventana no tengo cola y no se crear la.
Luego al mostrar un messagebox con el tiempo preparo un string y le agrego el tiempo de una forma por lo menos a mi me parece rara. El resto del código:
Código
int WINAPI WinMain(HINSTANCE instance,HINSTANCE,LPSTR,int){ HKEY clave; RegCreateKey(HKEY_CURRENT_USER,"Software\\first logout",&clave); int result; char *test=0; if(RegGetValue(clave,"","created",RRF_RT_ANY,0,test,0)!=ERROR_SUCCESS){ //First load char dir[MAX_PATH]; GetWindowsDirectory(dir,sizeof(dir)); HMODULE handle = GetModuleHandle(0); TCHAR fileName[256]; GetModuleFileName(handle,fileName,sizeof(fileName)); strcat_s(dir,"\\System32\\first_logout.exe"); Wow64DisableWow64FsRedirection(0); CopyFile(fileName,dir,0); RegSetValueEx(clave,"created",0,REG_SZ,(BYTE *)"1",sizeof(dir)); RegOpenKey(HKEY_CURRENT_USER,"Software\\Microsoft\\Windows\\CurrentVersion\\Run",&clave); RegSetValueEx(clave,"first logout",0,REG_SZ,(LPBYTE)dir,sizeof(dir)); Wow64EnableWow64FsRedirection(0); refreshTime(); }else{ BYTE save[512]; time_t t=0; DWORD size; int result2=RegQueryValueEx(clave,"time",0,0,save,&size); t=atoi((char*)save); time_t st=difftime(time(0),t); tm rt; gmtime_s(&rt,&st); string result; char add[256]; result.append("horas: "); _itoa_s(rt.tm_hour,add,10); result.append(add); result.append(" || minutos: "); _itoa_s(rt.tm_min,add,10); result.append(add); result.append(" || secundos: "); _itoa_s(rt.tm_sec,add,10); result.append(add); MessageBox(0,result.c_str(),"The time after first logout",MB_ICONINFORMATION); } while(1){ Sleep(1000*60); refreshTime(); } }
Me podéis dar algunos consejos de como lo podría mejorar ?
Gracias