Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Коррекция системного времени 
V
    Опции темы
Vladimir_K
Дата 13.7.2007, 00:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 149
Регистрация: 2.12.2006

Репутация: 1
Всего: 1



На моем компе системные часы постоянно спешат, и какой-либо коррекции не предусмотрено - крайне неудобно.
Существует ли какая-нибудь программка, которая следила бы за точностью хода системных часов?
Если такая прога уже есть, подскажите, пожалуйста, где ее можно найти, если нет - то как ее написать?
--------------------
Судя по всему, у меня огромное количество мозгов - мне требуется уйма времени, чтобы ими пораскинуть
PM MAIL ICQ   Вверх
Snowy
Дата 13.7.2007, 00:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 30
Всего: 484



1. Служба времени Windows (Найдёшь в Панель управления->Администрирование->Службы)
2. TidSNTP с закладки Indy Clients
PM MAIL   Вверх
Vladimir_K
Дата 13.7.2007, 00:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 149
Регистрация: 2.12.2006

Репутация: 1
Всего: 1



Хотел дописать постскриптум, но не успел  smile 
Вот он: 

P.S. ОС -> Win'98, синхронизация с сервером времени в Интернете недоступна...
--------------------
Судя по всему, у меня огромное количество мозгов - мне требуется уйма времени, чтобы ими пораскинуть
PM MAIL ICQ   Вверх
Snowy
Дата 13.7.2007, 01:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 30
Всего: 484



Ну тогда ручками - TidSNTP
Использовать его очень просто - буквально одна строка кода.
Хотя можно и на софтовиках найти кучку программ подобного рода.
Например в скринсэйверы вставляют такой функционал.
С другой стороны, если есть дельфи, то почему бы не написать под себя...  smile 
PM MAIL   Вверх
Vladimir_K
Дата 13.7.2007, 02:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 149
Регистрация: 2.12.2006

Репутация: 1
Всего: 1



Программку, я пожалуй написать смогу, но не знаю, как программно изменить системное время?
--------------------
Судя по всему, у меня огромное количество мозгов - мне требуется уйма времени, чтобы ими пораскинуть
PM MAIL ICQ   Вверх
Snowy
Дата 13.7.2007, 10:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 30
Всего: 484



И не надо - TIdSNTP сам возьмёт время с таймсервера и сам же его установит в систему.
Код

var
  sntp: TIdSNTP;
begin
  sntp := TIdSNTP.Create(nil);
  sntp.Host := 'wvnvm.wvnet.edu'; // сюда прописываем любой тайм-сервер
  try
    if sntp.SyncTime then // Этот метод сделает всё сам
      ShowMessage('Время синхронизировано')
    else ShowMessage('Синхронизация прошла не успешно');
  finally
    sntp.Free;
  end;
end;

PM MAIL   Вверх
Vladimir_K
Дата 13.7.2007, 12:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 149
Регистрация: 2.12.2006

Репутация: 1
Всего: 1



Спасибо, за помощь, только на том компе, на котором мне нужна коррекция времени, Интернет недоступен.

--------------------
Судя по всему, у меня огромное количество мозгов - мне требуется уйма времени, чтобы ими пораскинуть
PM MAIL ICQ   Вверх
Rennigth
Дата 13.7.2007, 13:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1708
Регистрация: 21.6.2004
Где: Moscow

Репутация: 8
Всего: 76



Vladimir_K, ну а чем ты тогда собираешься синхронизировать время? 

Думаю надо копать в сторону синхронизации механческого будильника и компьютера!  smile

Добавлено через 1 минуту и 47 секунд
Цитата(Vladimir_K @  13.7.2007,  00:39 Найти цитируемый пост)
которая следила бы за точностью хода системных часов?

Откуда то она должна же брать правильное время. 



--------------------
(* Honesta mors turpi vita potior *)
PM MAIL ICQ   Вверх
Vladimir_K
Дата 15.7.2007, 18:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 149
Регистрация: 2.12.2006

Репутация: 1
Всего: 1



Коррекция производится элементарно:
1) сначала определяем насколько часы спешат за сутки (например на 4 сек);
2) один раз в сутки отнимаем эти 4 сек из сист. времени, или 4 раза в сутки отнимаем по 1 сек.

Если часы спешат/отстают на нецелое кол-во секунд, алгоритм коррекции немножко меняется.

Добавлено через 13 минут и 6 секунд
Алгоритм приблизительно такой:

1) взять значение системного времени, и записать, например, в какую-нибудь переменную,
2) перевести ч.м.с. в секунды: 12ч 35м 10с = 45310 сек,
3) отнять/прибавить величину коррекции,
4) перевести секунды в ч.м.с.,
5) установить значение системных часов.

Что мне нужно, так это узнать, как программно выполнить пункты 1 и 5.
--------------------
Судя по всему, у меня огромное количество мозгов - мне требуется уйма времени, чтобы ими пораскинуть
PM MAIL ICQ   Вверх
MetalFan
Дата 15.7.2007, 19:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: 16
Всего: 128



установка системного времени
сперто из инди
Код

function SetLocalTime(Value: TDateTime): boolean;
{I admit that this routine is a little more complicated than the one
in Indy 8.0.  However, this routine does support Windows NT privillages
meaning it will work if you have administrative rights under that OS

Original author Kerry G. Neighbour with modifications and testing
from J. Peter Mugaas}
var
   dSysTime: TSystemTime;
   buffer: DWord;
   tkp, tpko: TTokenPrivileges;
   hToken: THandle;
begin
  Result := False;
  if SysUtils.Win32Platform = VER_PLATFORM_WIN32_NT then
  begin
    if not Windows.OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY,
      hToken) then
    begin
      exit;
    end;
    Windows.LookupPrivilegeValue(nil, 'SE_SYSTEMTIME_NAME', tkp.Privileges[0].Luid);    {Do not Localize}
    tkp.PrivilegeCount := 1;
    tkp.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
    if not Windows.AdjustTokenPrivileges(hToken, FALSE, tkp, sizeof(tkp), tpko, buffer) then
    begin
      exit;
    end;
  end;
  DateTimeToSystemTime(Value, dSysTime);
  Result := Windows.SetLocalTime(dSysTime);
  {Undo the Process Privillage change we had done for the set time
  and close the handle that was allocated}
  if SysUtils.Win32Platform = VER_PLATFORM_WIN32_NT then
  begin
    Windows.AdjustTokenPrivileges(hToken, False, tpko, SizeOf(tpko), tkp, Buffer);
    Windows.CloseHandle(hToken);
  end;
end;


Добавлено @ 19:35
по поводу коррекции без соединения с инетом...
вспоминается отечественные часы "электроника".
замеряется время отклонения за неделю, делится на 7 дней и каждый день "подкручивается" на эту дельту (с точностью до миллисекунд)

Это сообщение отредактировал(а) MetalFan - 15.7.2007, 19:38


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
Vladimir_K
Дата 15.7.2007, 20:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 149
Регистрация: 2.12.2006

Репутация: 1
Всего: 1



Огромное спасибо! То, что нужно!  smile 
--------------------
Судя по всему, у меня огромное количество мозгов - мне требуется уйма времени, чтобы ими пораскинуть
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: WinAPI и системное программирование"
Snowybartram
MetalFanbems
PoseidonRrader
Riply

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Delphi обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • 99% ответов по WinAPI можно найти в MSDN Library, оставшиеся 1% здесь

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема »


 




[ Время генерации скрипта: 0.0856 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.