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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Перезагрузка и отключение, Перезагрузка и отключение компьютера... 
:(
    Опции темы
Vco
Дата 16.2.2003, 03:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 311
Регистрация: 13.2.2003
Где: Москва

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



Как можно зделать перезагрузку компьютера? И отключение?


--------------------
Я всегда где-то рядом...! user posted image
PM MAIL WWW ICQ   Вверх
Vex
Дата 16.2.2003, 03:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


кацапосрачмученiкъ
****


Профиль
Группа: Экс. модератор
Сообщений: 3103
Регистрация: 28.3.2002
Где: strawberry fields

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



Выключение компьютера (любая винда)
Код


function GetWinVersion: String;
var
  VersionInfo : TOSVersionInfo;
  OSName      : String;
begin
  // устанавливаем размер записи
  VersionInfo.dwOSVersionInfoSize := SizeOf( TOSVersionInfo );

  if Windows.GetVersionEx( VersionInfo ) then
     begin
        with VersionInfo do
        begin
           case dwPlatformId of
              VER_PLATFORM_WIN32s   : OSName := 'Win32s';
              VER_PLATFORM_WIN32_WINDOWS : OSName := 'Windows 95';
              VER_PLATFORM_WIN32_NT      : OSName := 'Windows NT';
           end; // case dwPlatformId
           Result := OSName + ' Version ' + IntToStr( dwMajorVersion ) + '.' + IntToStr( dwMinorVersion ) +
                     #13#10' (Build ' + IntToStr( dwBuildNumber ) + ': ' + szCSDVersion + ')';
        end; // with VersionInfo
     end // if GetVersionEx
  else
     Result := '';
end;

procedure ShutDown;
const
 SE_SHUTDOWN_NAME = 'SeShutdownPrivilege';   // Borland forgot this declaration
var
 hToken       : THandle;
 tkp          : TTokenPrivileges;
 tkpo         : TTokenPrivileges;
 zero         : DWORD;
begin
 if Pos( 'Windows NT', GetWinVersion) = 1  then // we've got to do a whole buch of things
    begin
       zero := 0;
       if not OpenProcessToken( GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY, hToken) then
          begin
            MessageBox( 0, 'Exit Error', 'OpenProcessToken() Failed', MB_OK );
            Exit;
          end; // if not OpenProcessToken( GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY, hToken)
       if not OpenProcessToken( GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY, hToken) then
          begin
            MessageBox( 0, 'Exit Error', 'OpenProcessToken() Failed', MB_OK );
            Exit;
          end; // if not OpenProcessToken( GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY, hToken)


       // SE_SHUTDOWN_NAME
       if not LookupPrivilegeValue( nil, 'SeShutdownPrivilege' , tkp.Privileges[ 0 ].Luid ) then
          begin
             MessageBox( 0, 'Exit Error', 'LookupPrivilegeValue() Failed', MB_OK );
             Exit;
          end; // if not LookupPrivilegeValue( nil, 'SeShutdownPrivilege' , tkp.Privileges[0].Luid )
       tkp.PrivilegeCount := 1;
       tkp.Privileges[ 0 ].Attributes := SE_PRIVILEGE_ENABLED;

       AdjustTokenPrivileges( hToken, False, tkp, SizeOf( TTokenPrivileges ), tkpo, zero );
       if Boolean( GetLastError() ) then
          begin
             MessageBox( 0, 'Exit Error', 'AdjustTokenPrivileges() Failed', MB_OK );
             Exit;
          end // if Boolean( GetLastError() )
       else
          ExitWindowsEx( EWX_FORCE or EWX_SHUTDOWN, 0 );
     end // if OSVersion = 'Windows NT'
  else
     begin // just shut the machine down
       ExitWindowsEx( EWX_FORCE or EWX_SHUTDOWN, 0 );
     end; // else
end;





Взято с исходников.ру


--------------------
Слава Україні.
PM   Вверх
Step
Дата 16.2.2003, 03:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5151
Регистрация: 26.9.2002
Где: дурдом.UA

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



вообще в факю это есть и все гораздо проще


--------------------
- Дурак учится на своих ошибках, умный на чужих.
 - умные учатся у дураков
PM MAIL ICQ   Вверх
Vex
Дата 16.2.2003, 03:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


кацапосрачмученiкъ
****


Профиль
Группа: Экс. модератор
Сообщений: 3103
Регистрация: 28.3.2002
Где: strawberry fields

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



Или просто ExitWindowsEx(EWX_FORCE,0); для 98.


--------------------
Слава Україні.
PM   Вверх
Vex
Дата 16.2.2003, 03:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


кацапосрачмученiкъ
****


Профиль
Группа: Экс. модератор
Сообщений: 3103
Регистрация: 28.3.2002
Где: strawberry fields

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



Цитата(Step @ 15.2.2003, 18:25)
вообще в факю это есть и все гораздо проще

Посмотри внимательно FAQ, там чуть не так.


--------------------
Слава Україні.
PM   Вверх
Step
Дата 16.2.2003, 03:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5151
Регистрация: 26.9.2002
Где: дурдом.UA

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



Vex ты прав, ну если взять тот код и расмотреть сообщения, и функции которые в нем используються то можно сделать много хорошего. Привязку к системы ты сделал - это канечно круто, и по большому счету правильно, но ....


--------------------
- Дурак учится на своих ошибках, умный на чужих.
 - умные учатся у дураков
PM MAIL ICQ   Вверх
Vex
Дата 16.2.2003, 03:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


кацапосрачмученiкъ
****


Профиль
Группа: Экс. модератор
Сообщений: 3103
Регистрация: 28.3.2002
Где: strawberry fields

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



Цитата(Step @ 15.2.2003, 18:43)
Vex ты прав, ну если взять тот код и расмотреть сообщения, и функции которые в нем используються то можно сделать много хорошего. Привязку к системы ты сделал - это канечно круто, и по большому счету правильно, но ....

Спасибо, конечно, но это не мой код smile.gif Я его взял см. второй топик, внизу.


--------------------
Слава Україні.
PM   Вверх
Vco
Дата 16.2.2003, 04:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 311
Регистрация: 13.2.2003
Где: Москва

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



А перезарузить как ? Гыг выключить получилось... biggrin.gif


--------------------
Я всегда где-то рядом...! user posted image
PM MAIL WWW ICQ   Вверх
Song
Дата 16.2.2003, 05:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Sysman.ru
***


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

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



EWX_REBOOT вместо EWX_SHUTDOWN
Vex, может было лучше просто ссылку оставить? Нафига весь код постить, людям трафик нагонять?


--------------------
Прежде чем сказать "Невозможно", подумай, прав ли ты
PM WWW ICQ   Вверх
blast
Дата 16.2.2003, 21:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 16.2.2003
Где: Москва

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



Все так-то оно так - сам писал класс на эту тему... Но!! Если стоит NT'я, то Sleep режим загрузить не выходит confused.gif

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.

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


 




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


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

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