![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Выключение windows 2000 [D6]
atmospheric © (2002-10-10 00:16:00)Как выключить Windows NT/2000/XP ?
И как отключить Transporent у Glyph SpeedButton"а ?
Beglec (2002-10-10 03:21:00) [1]Тема перемолота до немогу.
Посмотри фак, там подробно и про xp и про 2000 написано.
{------------------------------------------------ Выход из Windows без всяких запросов}
procedure ExitWindow(Flag: integer); {Для Win9x, WinNT, Win2000 и WinXP}
{eLogOFF - Делает LogOFF
eReboot - Перегружает Компьютер
eShutDown - Выключает Компьютер}
const SE_SHUTDOWN_NAME = "SeShutdownPrivilege";
var os : string;
begin
{Win XP - имеет в каталоге %Windows%System32% приложение shutdown.exe которое значително облегчает данную процедуру, но
функция OSwindows() не может определить что это именно WinXP поэтому приходится обходиться стандартными методами}
if OSwindows(os)=VER_PLATFORM_WIN32_NT then {Если система Windows NT}
begin
Case Flag of {Взависимости от того что нужно сделать то и делаем}
eLogOFF: ExitWindowsEx(eLogOFF,0); {Простой LogOFF}
// ShellExecute(Application.handle,"open","shutdown.exe","-l -t 0 -c "SD Install - LogOff"","",SW_HIDE); {LogOFF Computer Для XP}
eReboot: ShellExecute(Application.handle,"open","shutdown.exe","-r -t 0 -c "SD Install - Reboot Computer"","",SW_SHOWNORMAL); {Restart Computer Для XP всен очень просто}
// OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY,hToken); {Установить нужные привилегии дяя перегрузки}
// 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);
// ExitWindowsEx(EWX_REBOOT,0); {Вот теперь можно и перегружаться}
eShutDown: ShellExecute(HWND(nil),"open","shutdown.exe","-s -t 0 -c "SD Install - ShutDown Computer"","",SW_SHOWNORMAL); {ShutDown Computer Для XP ну бля тут то просто :(}
// OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY,hToken); {Установить нужные привилегии}
// 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);
// ExitWindowsEx(EWX_SHUTDOWN,0); {вот теперь можно и выключать машину}
else Exit;
end; {case}
end
else
ExitWindowsEx(Flag,0); {Если операционная система Win9x то просто выход по флагу }
end;
В следующий раз не поленись зайти на фак или просто форум почитать.
trans
сейчас точно не помню.
Завтра подскажу.