Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.01.2008, 10:54   #1
В_И_К_Т_О_Р
Пользователь
 
Регистрация: 30.01.2008
Сообщений: 25
По умолчанию Время работы WINDOWS

Помогите чайнику!
Нужно в простенькую программу, которая показывает время работы WINDOWS добавить функцию записи в файл времени каждого включения и выключения компа. И еще вопрос: какое максимальное время может показать программа?
Программа на Delphi
Заранее благодарю.

Последний раз редактировалось В_И_К_Т_О_Р; 30.01.2008 в 11:04.
В_И_К_Т_О_Р вне форума Ответить с цитированием
Старый 30.01.2008, 11:13   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ну дык что не получается?
Цитата:
акое максимальное время может показать программа?
от 00 00 00 до 24 59 59 )
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 30.01.2008, 11:46   #3
В_И_К_Т_О_Р
Пользователь
 
Регистрация: 30.01.2008
Сообщений: 25
По умолчанию

Мне надо знать максимальное время не в часах и минутах за одни сутки, а в днях месяцах и годах. Я просто где то читал про такого рода программу и у нее максимальное время отсчета - 49 дней, а затем счетчик обнуляется.
В_И_К_Т_О_Р вне форума Ответить с цитированием
Старый 30.01.2008, 12:00   #4
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

Функция GetTickCount() возвращает количество миллисекунд, прошедших с момента старта системы. Возвращается значение DWORD размером 32 бита - отсюдa видим, что максимум - немного более четырех миллионов секунд или примерно полтора месяца.
B_N вне форума Ответить с цитированием
Старый 30.01.2008, 12:18   #5
AlDelta
Реанимируюсь...
Участник клуба
 
Аватар для AlDelta
 
Регистрация: 19.07.2007
Сообщений: 1,445
По умолчанию

В cmd забиваешь команду systeminfo.
Получаешь кучу разной инфы о системе.

Чтобы сохранить эту информацию в файл, запускаешь systeminfo >c:\info.txt. Нужные данные находятся (Дата установки, Время работы системы) на 10 и 11 строчках текста.

Дальше открываешь файл и выбираешь из него то, что тебе нужно.
Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живёте.
Правила форума => Правила раздела => Для общего развития => Помощь студентам => Перед тем, как создавать тему, скачайте себе...
P.S.: форум не песочница (с)
название статьи на сайте MS: "Отмена принудительного отключения автоматического запуска в реестре Windows"
AlDelta вне форума Ответить с цитированием
Старый 30.01.2008, 12:18   #6
furstenberg
Форумчанин
 
Регистрация: 08.10.2007
Сообщений: 125
По умолчанию

какое время работает Windows:
procedure TForm1.Button3Click(Sender: TObject);
var
ndays: double;
ticks: LongInt;
btime: TDateTime;
begin
{Функция GetTickCount получает количество миллисекунд,
прошедших с момента старта Windows}
ticks := GetTickCount;

{Чтобы получить дни, необходимо разделить на количество
миллисекунд в дне, 24*60*60*1000=86400000}
ndays := ticks/86400000;

{теперь вычитаем из текущей даты полученное количество
дней работы Windows}
bTime := now-ndays;

{показываем диалоговое окошко с сообщением}
ShowMessage(
FormatDateTime('"Windows started on" dddd, mmmm d, yyyy, ' +
'"at" hh:nn:ss AM/PM', bTime) + #10#13 +
'Its been up for ' + IntToStr(Trunc(nDays)) + ' days,' +
FormatDateTime(' h "hours," n "minutes," s "seconds"',ndays));
end;
furstenberg вне форума Ответить с цитированием
Старый 30.01.2008, 12:26   #7
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

Нашел у себя махонький исходничек:
Код:
#include <stdio.h>
#include <windows.h>
#include <math.h>

int main(){
    long tm = GetTickCount();
    int hours = ceil(tm/(60*60*1000));
    int days = ceil(hours/24);
    int minutes = ceil((tm - hours*1000*60*60)/(60*1000));
    int seconds = ceil((tm - hours*1000*60*60 - minutes*60*1000)/1000);
    printf("Windows Up Time: %dd:%02dh:%02dm:%02d.%ds - more than %d hour(s).\n", days, hours-days*24,minutes,seconds, tm%1000, hours);
    return 0;
}
B_N вне форума Ответить с цитированием
Старый 30.01.2008, 12:32   #8
В_И_К_Т_О_Р
Пользователь
 
Регистрация: 30.01.2008
Сообщений: 25
По умолчанию

Вопрос в том, что мне надо чтобы программа фиксировала в файле каждое включение и выключение компьютере и считала общее время работы за большой период (год и более)
В_И_К_Т_О_Р вне форума Ответить с цитированием
Старый 30.01.2008, 12:42   #9
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

Цитата:
Сообщение от В_И_К_Т_О_Р Посмотреть сообщение
Вопрос в том, что мне надо чтобы программа фиксировала в файле каждое включение и выключение компьютере и считала общее время работы за большой период (год и более)
Тогда это GetSystemTime :
Код:
void GetSystemTime(
  LPSYSTEMTIME lpSystemTime
);
Заполняет сруктуру SYSTEMTIME
Код:
typedef struct _SYSTEMTIME {  
WORD wYear;  
WORD wMonth;  
WORD wDayOfWeek;  
WORD wDay;  
WORD wHour;  
WORD wMinute;  
WORD wSecond;  
WORD wMilliseconds;
} SYSTEMTIME, *PSYSTEMTIME;
Ну а дальше простая арифметика. (Есть еще похожая GetLocalTime - для местного времени)
B_N вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сохранить внутрь себя во время работы Олвин Помощь студентам 6 29.08.2008 20:13
Создание обьектов во время работы программы Rusl92 Общие вопросы Delphi 4 11.08.2008 17:03
События, выполняемые во время работы созданной компоненты Denager Общие вопросы Delphi 13 22.04.2008 16:48
Создание компонентов во время работы программы Rusl92 Компоненты Delphi 23 05.04.2008 08:38
Время работы сортировок Боня Помощь студентам 1 10.02.2007 17:53