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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 11.11.2008, 16:19   #1
fobass
Форумчанин
 
Регистрация: 05.06.2008
Сообщений: 100
По умолчанию программа типа TIMER

Dobryi, rasklad tokoi ia ho4u sozdat' progu tipa "TIMER" 4toby vyklu4at' ili perezagruzit' svoi komp. v zadonom
vremeni, interfeis ia sozadl (sm. ris.1_0) teper nado proseduru obroshenie k WINDOWS pomogite
na4inaushimu programistu
Изображения
Тип файла: jpg TIMER.jpg (15.1 Кб, 145 просмотров)
fobass вне форума Ответить с цитированием
Старый 11.11.2008, 16:57   #2
FaTaL
Участник клуба
 
Аватар для FaTaL
 
Регистрация: 09.11.2007
Сообщений: 1,761
По умолчанию

Цитата:
Сообщение от fobass Посмотреть сообщение
Dobryi, rasklad tokoi ia ho4u sozdat' progu tipa "TIMER" 4toby vyklu4at' ili perezagruzit' svoi komp. v zadonom
vremeni, interfeis ia sozadl (sm. ris.1_0) teper nado proseduru obroshenie k WINDOWS pomogite
na4inaushimu programistu
Какая именно Вам процедура нужна?
Если выключение и тому подобное, то вот:

Для выполнения перезагрузки/выключения предназначены функции ExitWindows/ExitWindowsEx

ExitWindows:

Описание:
Function ExitWindows(Reserved: DWord; ReturnCode: Word): Bool;
Иницииpует стандаpтную пpоцедуpу завеpшения pаботы с Windows. Все пpикладные задачи должны подтвеpдить завеpшение pаботы Windows. Вызывает функцию 4CH пpеpывания 21H DOS.

Паpаметpы:
Reserved: Установлен в нуль.
ReturnCode: Значение, пеpедаваемое в DOS (в pегистpе AL).

Возвpащаемое значение:
Нуль, если одна или несколько задач отказываются завеpшить pаботу.

Примеры использования:
ExitWindows(EWX_LOGOFF,0); - завершение сеанса
ExitWindows(EWX_SHUTDOWN,0); - выключение компьютера
ExitWindows(EWX_REBOOT,0); - перезагрузка
Флаги EWX_FORCE, EWX_POWEROFF и EWX_FORCEIFHUNG могут комбинироваться к нужному действию.

ExitWindowsEx:
Функция ExitWindowsEx() представляет собой расширенный вариант ExitWindows().

Описание:
BOOL ExitWindowsEx( UINT uFlags, DWORD dwReserved, );
Функция ExitWindowsEx перезагружает(restart) или выключает систему (shutdown), а также может завершить сессию для текущего пользователя(log off).

Параметры:
uFlags -- флаг завершения работы, может принимать следущие значения:
EWX_LOGOFF завершает сессию текущего пользователя.
EWX_POWEROFF выключает питание компьютера(компьютер должен поддерживать данную функцию).
EWX_REBOOT перезагружает систему.
EWX_SHUTDOWN завершает работу комьпьютера до того места, где он может быть безопасно выключен: сброшенны все файловые буферы на диск, завершает работу всех процессов.
dwReserved --Зарезирвированно для последующих нужд, параметр игнорируется.

Возвращаемое значение:
Не ноль если всё прошло успешно

Пример использования:
ExitWindowsEx(EWX_SHUTDOWN,0);
Остальные примеры смотри в описании первой функции.

Вышеописанные примеры действительны только для w9x/Me.
Дело в том, что, чтобы выполнить функциию в NT ОС, нужно получить права на выполнение этой функции. Сделать это можно через AdjustTokenPriviligies.
С помощью нижеприведённой функции можно получить любую привелегию, в т.ч. и привеленгию SeShutdownPrivilege, которая нужна для разрешения функции
FaTaL вне форума Ответить с цитированием
Старый 11.11.2008, 20:12   #3
Terran
Участник клуба
 
Аватар для Terran
 
Регистрация: 28.11.2007
Сообщений: 1,521
По умолчанию

Цитата:
Сообщение от fobass Посмотреть сообщение
Dobryi, rasklad tokoi ia ho4u sozdat' progu tipa "TIMER" 4toby vyklu4at' ili perezagruzit' svoi komp. v zadonom
vremeni, interfeis ia sozadl (sm. ris.1_0) teper nado proseduru obroshenie k WINDOWS pomogite
na4inaushimu programistu
Выключение, перезагрузку, перевод в ждущий режим в Windows NT или XP можно осуществить так:
Код:
Procedure TForm1.Button1Click(Sender: TObject);
Var
hToken: THandle;
tkp: TTokenPrivileges;
ReturnLength: Cardinal;
Begin
If OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES Or
TOKEN_QUERY, hToken) Then
Begin
LookupPrivilegeValue(Nil, 'SeShutdownPrivilege', tkp.Privileges[0].Luid);
tkp.PrivilegeCount := 1;
tkp.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
If AdjustTokenPrivileges(hToken, False, tkp, 0, Nil, ReturnLength) Then
ExitWindowsEx(EWX_Reboot,0); // Перезагрузка
{ExitWindowsEx(EWX_ShutDown,0);// Выключение
SetSystemPowerState(true, true);  } //Перевести комп в ждущий режим
End;
End;
(Пример получения привилегий)
Всегда рад помочь!
Terran вне форума Ответить с цитированием
Старый 12.11.2008, 17:41   #4
fobass
Форумчанин
 
Регистрация: 05.06.2008
Сообщений: 100
По умолчанию

искрений блогодарин спс разберемся пока времени нет, курсовая горит

Последний раз редактировалось fobass; 12.11.2008 в 17:43.
fobass вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Timer... Teleport Общие вопросы Delphi 13 14.09.2011 17:02
timer ZYRGiX Помощь студентам 3 21.07.2008 15:15
Программа типа Консультант плюс Жемчужинка БД в Delphi 0 24.04.2008 14:42
Timer PAVEL315 Компоненты Delphi 16 20.12.2006 19:47
timer Toxa Компоненты Delphi 6 06.12.2006 06:58