![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как перевести компьютер в ждущий режим? [Win2k, WinXP]
Wolfram © (2005-09-30 22:09:00)Как перевести компьютер в ждущий и спящий режимы под WinXP? Функция systemparametersinfo здесь не работает.
Antonn (2005-10-02 05:27:00) [1]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);
Wolfram (2005-10-01 21:12:00) [2]Чё-то я не понял - функции NTWait и NTSleep абсолютно одинаковые и переводят комп в ждущий режим. А как со спящим?
Antonn (2005-10-01 15:10:00) [3]Pass[word] © (01.10.05 8:52) [4]
так только выключить можно.
Pass[word] (2005-10-01 08:52:00) [4]Я знаю как. Молотком!
Antonn (2005-10-01 08:50:00) [5]я так:
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:00) [6]аге, спащий забыл:
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;
Wolfram (2005-10-01 07:44:00) [7]Народ, неужели никто не знает, как это сделать???