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

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

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.12.2007, 22:02   #1
Никки
Форумчанин Подтвердите свой е-майл
 
Аватар для Никки
 
Регистрация: 20.11.2007
Сообщений: 500
Вопрос заставить компьютер перейти в спящий и ждущий режим

Как заставить компьютер перейти в спящий и ждущий режимы!

И ещё как перейти на экран приветствия (Windows+L)

Заранее спасибо!
Никки вне форума Ответить с цитированием
Старый 02.12.2007, 22:47   #2
FaTaL
Участник клуба
 
Аватар для FaTaL
 
Регистрация: 09.11.2007
Сообщений: 1,761
По умолчанию

Цитата:
Сообщение от Никки Посмотреть сообщение
Как заставить компьютер перейти в спящий и ждущий режимы!

И ещё как перейти на экран приветствия (Windows+L)

Заранее спасибо!
Ждущий режим
Код:
procedure TForm1.N5Click(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
  SetSystemPowerState(true, true);
end;
end;
Спящий режим
Код:
procedure TForm1.N6Click(Sender: TObject);
begin
winexec(Pchar('rundll32.exe powrprof.dll,SetSuspendState'),sw_Show);
end;
А вот как залочить комп не знаю. Не надо было.
FaTaL вне форума Ответить с цитированием
Старый 03.12.2007, 07:14   #3
Sibedir
Тот ещё
Старожил
 
Аватар для Sibedir
 
Регистрация: 14.11.2007
Сообщений: 2,242
По умолчанию

Код:
keybd_event (VK_LWIN, 0, 0, 0);
keybd_event (76, 0, 0, 0);
keybd_event (76, 0, KEYEVENTF_KEYUP, 0);
keybd_event (VK_LWIN, 0, KEYEVENTF_KEYUP, 0);
Sibedir вне форума Ответить с цитированием
Старый 03.12.2007, 08:04   #4
FaTaL
Участник клуба
 
Аватар для FaTaL
 
Регистрация: 09.11.2007
Сообщений: 1,761
По умолчанию

Цитата:
Сообщение от Sibedir Посмотреть сообщение
Код:
keybd_event (VK_LWIN, 0, 0, 0);
keybd_event (76, 0, 0, 0);
keybd_event (76, 0, KEYEVENTF_KEYUP, 0);
keybd_event (VK_LWIN, 0, KEYEVENTF_KEYUP, 0);
Спасибо. Залочивание компа работает. Ещё бы хотелось узнать как выйти из пользователя в NT подобных системах?
FaTaL вне форума Ответить с цитированием
Старый 03.12.2007, 08:10   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

LockWorkStation
Функция LockWorkStation отправляет запрос на блокировку дисплея рабочей станции. Блокирование рабочей станции защищает ее от несанкционированного использования.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 03.12.2007, 08:34   #6
Sibedir
Тот ещё
Старожил
 
Аватар для Sibedir
 
Регистрация: 14.11.2007
Сообщений: 2,242
По умолчанию

Цитата:
как выйти из пользователя в NT подобных системах
Вроде так: shutdown -l

Для Stilet:
А что возвращает LockWorkStation?

Последний раз редактировалось Sibedir; 03.12.2007 в 08:38.
Sibedir вне форума Ответить с цитированием
Старый 03.12.2007, 08:36   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
как выйти из пользователя в NT подобных системах
Еще можно применить ExitWindowsEx.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 03.12.2007, 08:42   #8
Sibedir
Тот ещё
Старожил
 
Аватар для Sibedir
 
Регистрация: 14.11.2007
Сообщений: 2,242
По умолчанию

О, нашел. .

Цитата:
Функция LockWorkStation отправляет запрос на блокировку дисплея рабочей станции. Блокирование рабочей станции защищает ее от несанкционированного использования.

BOOL LockWorkStation(VOID);

Параметры
Функция не имеет параметров.

Возвращаемые значения
В случае успеха возвращается ненулевое значение. Поскольку функция выполняется асинхронно, ненулевое возвращаемое значение указывает, что операция была инициирована. Оно не указывает, была ли рабочая станция успешно заблокирована.
В случае неудачи возвращается нуль. Для получения дополнительной информации об ошибке вызовите функцию GetLastError.

Комментарии
Общими причинами, по которым рабочая станция не может быть заблокирована, даже если вызов функции завершился успешно, могут быть: отсутствие вошедшего в систему пользователя, существующая блокировка рабочей станции, запущенность процесса не на интерактивном рабочем столе, отклонение запроса библиотекой графической идентификации и аутентификации (GINA DLL).
Вызов функции приводит к такому же результату, что и нажатие клавиш Ctrl+Alt+Del и щелчок по кнопке "Lock Workstation" ("Блокировка"). Для разблокирования рабочей станции пользователь должен войти в систему.

Требования
Windows NT/2000/XP: включена в Windows 2000 и выше.
Windows 95/98/Me: не поддерживается.
Заголовок: объявлена в Winuser.h; подключать Windows.h.
Библиотека: используйте User32.lib.
Кстати. ExitWindowsEx уже смотрел. Описание не нашел. Функция требует какие-то параметры.

Последний раз редактировалось Sibedir; 03.12.2007 в 21:30.
Sibedir вне форума Ответить с цитированием
Старый 03.12.2007, 08:47   #9
Sibedir
Тот ещё
Старожил
 
Аватар для Sibedir
 
Регистрация: 14.11.2007
Сообщений: 2,242
По умолчанию

И так заработала:
Код:
ExitWindowsEx (0, 0);
Sibedir вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как перейти по ссылке (URL) Avron Общие вопросы Delphi 3 22.12.2008 16:56
Как перейти на следущюю строку? nikleb Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 2 16.06.2008 21:19
Безопасная связка компьютер-компьютер, как организовать наилучшую защиту Alar Операционные системы общие вопросы 3 17.02.2008 21:15
Перезагрузка компа, ждущий и спящий режим Yar Помощь студентам 2 21.08.2007 10:28