Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.12.04;
Скачать: CL | DM;

Вниз

Как перевести компьютер в ждущий режим?   Найти похожие ветки 

 
Wolfram ©   (2005-09-30 22:09) [0]

Как перевести компьютер в ждущий и спящий режимы под WinXP? Функция systemparametersinfo здесь не работает.


 
Wolfram ©   (2005-10-01 07:44) [1]

Народ, неужели никто не знает, как это сделать???


 
Antonn ©   (2005-10-01 08:50) [2]

я так:

procedure NTWait;
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
     SetSystemPowerState(true, true);
 end;
end;


 
Antonn ©   (2005-10-01 08:50) [3]

аге, спащий забыл:

procedure NTSleep;
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; // one privelege to set
   tkp.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
   if AdjustTokenPrivileges(hToken, False, tkp, 0, nil, ReturnLength) then
     SetSystemPowerState(true, true);
 end;
end;


 
Pass[word] ©   (2005-10-01 08:52) [4]

Я знаю как. Молотком!


 
Antonn ©   (2005-10-01 15:10) [5]

Pass[word] ©   (01.10.05 8:52) [4]
так только выключить можно.


 
Wolfram ©   (2005-10-01 21:12) [6]

Чё-то я не понял - функции NTWait и NTSleep абсолютно одинаковые и переводят комп в ждущий режим. А как со спящим?


 
Antonn ©   (2005-10-02 05:27) [7]

Wolfram ©   (01.10.05 21:12) [6]
ой. точно одинаковые...

var
  _SetSuspendState: function (Hibernate, ForceCritical, DisableWakeEvent: BOOL): BOOL
  stdcall = nil;

function LinkAPI(const module, functionname: string): Pointer; forward;

function SetSuspendState(Hibernate, ForceCritical, DisableWakeEvent: Boolean): Boolean;
begin
  if not Assigned(_SetSuspendState) then
    @_SetSuspendState := LinkAPI("POWRPROF.dll", "SetSuspendState");
  if Assigned(_SetSuspendState) then
    Result := _SetSuspendState(Hibernate, ForceCritical,
      DisableWakeEvent)
  else
    Result := False;
end;

function LinkAPI(const module, functionname: string): Pointer;
var hLib: HMODULE;
begin
  hLib := GetModulehandle(PChar(module));
  if hLib = 0 then
    hLib := LoadLibrary(PChar(module));
  if hLib <> 0 then
    Result := getProcAddress(hLib, PChar(functionname))
  else
    Result := nil;
end;

юзание - SetSuspendState(True, False, False);



Страницы: 1 вся ветка

Текущий архив: 2005.12.04;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.039 c
9-1121759123
NewWonder
2005-07-19 11:45
2005.12.04
Выделение в OpenGL


2-1131945110
Laymer
2005-11-14 08:11
2005.12.04
Запуск DOS приложений


9-1121683630
WondeRu
2005-07-18 14:47
2005.12.04
GLScene! Как наложить сетку на уже отрендеренную картинку?


4-1128103792
Wolfram
2005-09-30 22:09
2005.12.04
Как перевести компьютер в ждущий режим?


4-1128426111
Roughneck
2005-10-04 15:41
2005.12.04
Как получить Handle первичного потока зная только ID процесса