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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.02.2008, 16:00   #1
Иллидан
Форумчанин
 
Регистрация: 16.01.2008
Сообщений: 288
По умолчанию Установить время включения ком-па

Можно ли через Delphi обратиться к bios и установить время включения компа?
Иллидан вне форума Ответить с цитированием
Старый 18.02.2008, 16:04   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Время включения компа можно получить функой GetSystemTime если прога запустится в автозагрузке, или как служба при включении.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 18.02.2008, 16:09   #3
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Если я правильно понял топикстартера, его интересует включение компьютера в заданное время...
Если БИОС такое позволяет.
И вопрос состоит в программном доступе к функциям БИОС.
Или...?
mihali4 вне форума Ответить с цитированием
Старый 18.02.2008, 16:13   #4
Иллидан
Форумчанин
 
Регистрация: 16.01.2008
Сообщений: 288
По умолчанию

Цитата:
Сообщение от mihali4 Посмотреть сообщение
Если я правильно понял топикстартера, его интересует включение компьютера в заданное время...
Если БИОС такое позволяет.
И вопрос состоит в программном доступе к функциям БИОС.
Да правильно
Иллидан вне форума Ответить с цитированием
Старый 18.02.2008, 17:17   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Разный БИОС работает по разному, это нужно в нем смотреть есть ли такая опция.
Но во многох опциях есть фича "включения компа от внешнего устройства или сигнала" может это подойдет:

Мол есть комп-сервер, и куча клиентов с настроенным включением при сигнале с LAN. Сервер утром рассылает по сетке всем сигнал, и компы включаются.
I'm learning to live...

Последний раз редактировалось Stilet; 18.02.2008 в 17:20.
Stilet вне форума Ответить с цитированием
Старый 18.02.2008, 17:31   #6
Иллидан
Форумчанин
 
Регистрация: 16.01.2008
Сообщений: 288
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Разный БИОС работает по разному, это нужно в нем смотреть есть ли такая опция.
Да, в моем биосе есть такая опция. И я могу ставить время включения компа через нее. А как к ней обратиться в винде через Дельфу я понятие не имею!?
Иллидан вне форума Ответить с цитированием
Старый 18.02.2008, 17:31   #7
Иллидан
Форумчанин
 
Регистрация: 16.01.2008
Сообщений: 288
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Но во многох опциях есть фича "включения компа от внешнего устройства или сигнала" может это подойдет:

Мол есть комп-сервер, и куча клиентов с настроенным включением при сигнале с LAN. Сервер утром рассылает по сетке всем сигнал, и компы включаются.
Это не совсем то. Но и это через Дельфу, я тоже не знаю как включить или отключить

Последний раз редактировалось Иллидан; 18.02.2008 в 17:34.
Иллидан вне форума Ответить с цитированием
Старый 18.02.2008, 18:14   #8
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Все, что удалось найти более-менее вразумительного:
Цитата:
Существуют утилиты, позволяющие изменять параметры BIOS прямо из операционной системы. Наибольшей популярностью пользуется Tweak BIOS, бесплатную версию которой можно загрузить по адресу www.miro.pair.com/tweakbios. Программа предназначена для оптимизации работы чипсета материнской платы, центрального процессора и видеокарты и предоставляет доступ к регулировкам, которые зачастую не "показаны" в BIOS материнских плат. Примечателен тот факт, что утилита способна изменять параметры "на лету", не требуя перезагрузки и не обновляя микрокод в ПЗУ BIOS. Она совместима практически со всеми существующими чипсетами и графическими акселераторами и не зависит от версии BIOS, установленной в компьютере.
Вот еще:
Цитата:
в порт $70 записывается номер ячейки, а затем в $71 записывается значение этой ячейки. Но есть три нюанса:
1. Понадобится спец. драйвер для записи в любой порт вообще (в сети есть даже с примером)
2. Неизвестны номера ячеек, и не знаю сможешь ли найти в сети. Они зависят от конкретного биоса.
3. После изменений нужно как-то еще побороть ошибку CMOS checksum error...
Или пересчитать контрольную сумму и записать...
М-м-да, геморройную задачу вы себе придумали...

Последний раз редактировалось mihali4; 18.02.2008 в 18:30.
mihali4 вне форума Ответить с цитированием
Старый 19.02.2008, 08:32   #9
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

Не так страшен чёрт, как его малюют. Правда, Дельфи здесь помощник неважный.

Сначала о CMOS NVRAM BIOS'а. Это к большинстве случаев 128 байт, которые адресуются старым способом: в порт 70h записывается индекс нужного байта, и из порта 71h он следом читается (или пишется). Скажем, если взять что-нибудь ископаемое, вроде квик-бэйсика или старого паскаля, то можно изобразить "программу" такого рода:
Код:
var hex : string;
procedure WriteHex(b : byte);
begin
     Write(hex[(b shr 4) + 1]);
     Write(hex[(b and $0F) + 1]);
end;
var i : integer;
begin
	hex := '0123456789ABCDEF';

	for i:= 0 to 127 do begin
		port[$70] := i;
		WriteHex(i);
		Write(' : ');
		WriteHex(port[$71]);
		Writeln;
	end;
end.
которая будет выдавать на гора содержимое CMOS.
Читать CMOS, кстати, можно и под Windows, хотя, конечно, лучше смастерить досовую дискетку и как в старые добрые времена. (Тем более, что цель игры - записать в CMOS!) Если под досом забить бсе байты CMOS'а нулями, то убедимся, что настройки биоса слетают, контрольная сумма неверна, ну и т.д., одним словом - работает.
Теперь можно приступать к практической части - сделать десяток другой снимков CMOS с включеным/выключеным wakeup'ом и внимательно их сравнить, принимая во внимание, скажем, вот эти "документы":
http://bochs.sourceforge.net/techspe...-reference.txt
http://heim.ifi.uio.no/~stanisls/helppc/cmos_ram.html
http://ivs.cs.uni-magdeburg.de/~zbrog/asm/cmos.html
(там, между прочим, даже описано, как посчитать контрольную сумму)
Не исключаю даже, что если полазить часок по гуглю, можно будет найти полную "раскладку", включая нужные байты и их формат, кроме того имеются похожие проекты:
http://sourceforge.net/projects/nvram-wakeup/
http://www.bessems.biz/wakeup/
После того, как нужные байты и их формат будут найдены и под досом проверена запись в них, можно приступить ко второй части - изготовлению драйвера, чтобы можно было писать из-под Windows. На самом деле это совсем не страшная задача, поскольку функционал здесь довольно простенький и вполне можно не заморачиваться и просто разместить запись в два порта прямо внутри функции DriverEntry и потом "неудачно" завершаться, чтобы не загружать модуль в ядро, ну а можно, конечно, написать полноценный драйвер и общаться с ним, как положено, через DeviceIoControl. Вкратце вот...
B_N вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
AlphaSkins как установить aesoem Компоненты Delphi 12 09.11.2009 23:29
TrackBar установить шаг MAcK Компоненты Delphi 3 04.08.2008 14:41
установить artemavd Общие вопросы Delphi 5 31.07.2008 18:10
Как установить DelphiX? SG13 Gamedev - cоздание игр: Unity, OpenGL, DirectX 2 24.01.2008 16:55
Помогите установить Компоненты OrdJONY Общие вопросы Delphi 7 18.05.2007 10:03