Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Как вытащить дату и время из биос ? Добавлено: 19.03.09 16:15  

Автор вопроса:  sergey
Просьба помочь с вопросом:
Как вытащить дату и время из биос ?
Задал преподаватель и сказал что должен сделать сам, а не скатать из нета. В нете нашел примерно 5 методик, но это не то.. потому что мне надо разобраться нормально с этим вопросом, а не тупо скопировать. Не понятно:
1 Какие есть вообще варианты (1 копированием из адреса информации,а др. ?)
2 Откуда читается машинный алрес из которого берется информация...
3 Как это зависит от версии windows или bios или производителя мат платы...
Подскажите книгу, где про это можно почитать ...

Ответить

  Ответы Всего ответов: 10  

Номер ответа: 1
Автор ответа:
 mc-black



ICQ: 308-534-060 

Вопросов: 20
Ответов: 1860
 Web-сайт: mc-black.narod.ru/dzp.htm
 Профиль | | #1
Добавлено: 19.03.09 21:55
Твой преподаватель над тобой глумится =) На чем (каком языке) предполагается получать эти данные и на какой платформе? Если ты в windows, то опосредованно время биос можно получить через API: GetSystemTime/GetLocalTime в структуру SYSTEMTIME по ссылке на любом языке программирования, способном работать с API. Есть собсоб уровнем чуть пониже: ZwQuerySystemTime, тоже опосредованно, только через базовую системную службу режима ядра. Здесь нужны Windows и языки, способные работать с DDK: С/C++/ассемблер. Реально функции GetSystemTime и GetSystemTimeAsFileTime осуществляют чтение из страницы KUSER_SHARED_DATA. Более низкий уровень - на ассемблере из под DOS - вызов функций биос - сам этим не занимался, т.к. это мне неинтересно, но накопать информацию по вызову функций биос не составляет труда. Собственно ты сам должен определиться с этим вопросом и выбрать путь для себя.

Ответить

Номер ответа: 2
Автор ответа:
 sergey



Вопросов: 6
Ответов: 17
 Профиль | | #2 Добавлено: 20.03.09 10:07
Преподаватель не ставил ограничений по языку программирования. Я имею небольшой опыт программирования на Visual basic, delphi, turbo pascal. Требование к программе: Надо поменять системное время на компьютере, но время необходимо взять из BIOS. ОС windows.

Не понял опосредованно это как ?
Думаю что с API еще есть у меня шанс разобраться, а вот как с С++ не знаю..

Ответить

Номер ответа: 3
Автор ответа:
 sergey



Вопросов: 6
Ответов: 17
 Профиль | | #3 Добавлено: 20.03.09 10:55
а функция Now, которая возвращает текущую дату и время для местной временной зоны.

Возвращенный тип TDateTime может быть использован и показан многими SysUtil и DateUtils процедурами

Из Bios берет время ??

Ответить

Номер ответа: 4
Автор ответа:
 mc-black



ICQ: 308-534-060 

Вопросов: 20
Ответов: 1860
 Web-сайт: mc-black.narod.ru/dzp.htm
 Профиль | | #4
Добавлено: 20.03.09 12:40
Вот, сделал с помощью GetLocalTime и SetLocalTime http://mc-black.narod.ru/wrk/clpbrd02.png
Сама программка: http://mc-black.narod.ru/wrk/Project09.exe Понравилось - пиши в почту, мой адрес в профиле.

Ответить

Номер ответа: 5
Автор ответа:
 sergey



Вопросов: 6
Ответов: 17
 Профиль | | #5 Добавлено: 20.03.09 13:06
Спасибо... пока хочу сам поковыряться.. созрел уже :)
Буду использовать функции now и SetLocalTime.

Ответить

Номер ответа: 6
Автор ответа:
 sergey



Вопросов: 6
Ответов: 17
 Профиль | | #6 Добавлено: 20.03.09 13:12
В qci кинул предложение .. .

Ответить

Номер ответа: 7
Автор ответа:
 mc-black



ICQ: 308-534-060 

Вопросов: 20
Ответов: 1860
 Web-сайт: mc-black.narod.ru/dzp.htm
 Профиль | | #7
Добавлено: 20.03.09 13:24
Ну блин, тяга к знаниям поощряется ;) Вот тебе объявления нужных функций
  1. Private Declare Sub GetLocalTime Lib "kernel32" (lpSystemTime As SYSTEMTIME)
  2. Private Declare Function SetLocalTime Lib "kernel32" (lpSystemTime As SYSTEMTIME) As Long
  3. Private Type SYSTEMTIME
  4.         wYear As Integer
  5.         wMonth As Integer
  6.         wDayOfWeek As Integer
  7.         wDay As Integer
  8.         wHour As Integer
  9.         wMinute As Integer
  10.         wSecond As Integer
  11.         wMilliseconds As Integer
  12. End Type
  13. Dim stm As SYSTEMTIME


Вот так получаешь дату и время из bios через интерфейсы Винды:
  1. Dim stm As SYSTEMTIME
  2. Call GetLocalTime(stm)


А вот так задаешь другое ввремя:
  1. stm.wHour = 17
  2. stm.wMinute = 30
  3. Call SetLocalTime(stm)


"Что всегда было на пол шестого" )))

Ответить

Номер ответа: 8
Автор ответа:
 sergey



Вопросов: 6
Ответов: 17
 Профиль | | #8 Добавлено: 20.03.09 13:35
Спасибо .. исчерпывающая информация
есть еще вопрос по С++ который сам не одолею.. готов заплатить за консультацию ..
zwezda-11@mail.ru

Ответить

Номер ответа: 9
Автор ответа:
 mc-black



ICQ: 308-534-060 

Вопросов: 20
Ответов: 1860
 Web-сайт: mc-black.narod.ru/dzp.htm
 Профиль | | #9
Добавлено: 20.03.09 13:50
Пожалуйста.

Ответить

Номер ответа: 10
Автор ответа:
 SergeyZuzic



ICQ: 474690219 

Вопросов: 5
Ответов: 155
 Web-сайт: vsedlysita.narod.ru
 Профиль | | #10
Добавлено: 31.03.09 08:26
GetLocalTime из API

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам