Форум программистов, компьютерный форум CyberForum.ru

Узнать время работы компьютера - C++

Восстановить пароль Регистрация
 
GBIT
 Аватар для GBIT
11 / 11 / 1
Регистрация: 05.10.2011
Сообщений: 219
19.09.2013, 19:40     Узнать время работы компьютера #1
Есть некая программа запускающаяся при старте системы. Выключается она только при отключении компьютера. Необходимо по команде к этой программе получить время текущей работы этой программы.
(возможно есть функции для получения время работы компьютера, если подскажите тоже вариант подойдет)

что я уже нашел?
нашел великолепную структуру tm*
http://cppstudy.wordpress.com/2009/0...ent-date-time/
однако с ней не работает фишка: взять разность двух структур в разное время работы и получить время работы программы.

еще нашел такую тему
Использовать время (таймер) в С++ консоль
тут есть целый класс Таймер, но у меня с ООП туго, если честно, да и вопрос наверняка можно решить проще, чем такой класс включать в проект.
написать свой таймер не так уж и сложно, но мне хотелось бы воспользоваться функциями уже готовыми.

Добавлено через 26 минут
вот такое наваял на скорую руку. Но этот таймер не более чем на сутки и код ручками прописан. Может есть что по проще?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
#include <windows.h>
#include <stdio.h>
#include <ctime>
 
struct MyTime
{
    int     sec;
    int     min;
    int     hour;
};
 
int main()
{
    MyTime          startTime,                      // хранит время старта системы
                    curTime,                        // текущее время в системе
                    workTime;                       // время работы программы
    time_t          seconds = time(NULL);
    tm*             timeinfo = localtime(&seconds);
 
 
    startTime.sec = timeinfo->tm_sec;
    startTime.min = timeinfo->tm_min;
    startTime.hour = timeinfo->tm_hour;
 
    printf("[ %02i:%02i:%02i ]\n",startTime.hour,startTime.min,startTime.sec);
    system("pause");
    
    
    seconds = time(NULL);
    timeinfo = localtime(&seconds);
 
    curTime.sec = timeinfo->tm_sec;
    curTime.min = timeinfo->tm_min;
    curTime.hour = timeinfo->tm_hour;
 
    printf("[ %02i:%02i:%02i ]\n", curTime.hour, curTime.min, curTime.sec);
 
    workTime.sec = curTime.sec - startTime.sec;
    if(workTime.sec<0)
    {
        curTime.min--;
        workTime.sec += 60;
    }
    workTime.min = curTime.min - startTime.min;
    if(workTime.min<0)
    {
        curTime.hour--;
        workTime.min += 60;
    }
    workTime.hour = curTime.hour - startTime.hour;
    
    printf("[ %02i:%02i:%02i ]\n", workTime.hour, workTime.min, workTime.sec);
 
    return 0;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ninja2
 Аватар для ninja2
230 / 186 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
19.09.2013, 21:52     Узнать время работы компьютера #2
Цитата Сообщение от GBIT Посмотреть сообщение
что я уже нашел?
нашел великолепную структуру tm*
http://cppstudy.wordpress.com/2009/0...ent-date-time/
однако с ней не работает фишка: взять разность двух структур в разное время работы и получить время работы программы.
Можешь просто взять время замерять, затем снова замерять и посчитать разницу времен.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include <iostream>
using std::cout;
using std::endl;
#include <string>
using std::string;
#include <ctime>
#include <Windows.h>
 
int main()
{
    time_t time_begin;//начальное время
    time_t time_prov;//время которое будем просто замерять при вызове функции
 
    time(&time_begin);
    //...
    //как бы работа программы
    //делаем задержку типо программа работает.
    Sleep(3333);
    //...
    time(&time_prov);//замеряем время
    //cout <<ctime(&time_begin)<<endl;
    //cout <<ctime(&time_prov)<<endl;
 
    double second=difftime(time_prov,time_begin);//разница времен будет время которое отработала программа
    cout <<"second= "<<second<<endl;
 
 
 
    return 0;
}
Игорь с++
 Аватар для Игорь с++
429 / 452 / 15
Регистрация: 26.01.2011
Сообщений: 2,029
19.09.2013, 22:50     Узнать время работы компьютера #3
Если не нужна особая точность то пусть программа считает минуты ( секунды ) и пишет в текстовый файл .
Ab
75 / 75 / 1
Регистрация: 03.05.2012
Сообщений: 161
20.09.2013, 04:00     Узнать время работы компьютера #4
Цитата Сообщение от GBIT Посмотреть сообщение
(возможно есть функции для получения время работы компьютера, если подскажите тоже вариант подойдет)
Наипростейший вариант - GetTickCount(), хватает на 49 дней, в подавляющем большинстве случаев этого достаточно.
GBIT
 Аватар для GBIT
11 / 11 / 1
Регистрация: 05.10.2011
Сообщений: 219
20.09.2013, 18:53  [ТС]     Узнать время работы компьютера #5
Все эти решения возвращают результат в секундах. С этим у меня проблем нет, такие решения знаю, в ручную переводить потом в минуты часы и тд. можно, но я спрашивал уже готовые системные функции.
Yandex
Объявления
20.09.2013, 18:53     Узнать время работы компьютера
Ответ Создать тему
Опции темы

Текущее время: 12:53. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru