Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > ОС и железо
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 24.04.2020, 11:44
gumel gumel вне форума
Прохожий
 
Регистрация: 29.12.2010
Сообщения: 4
Репутация: 10
По умолчанию Не дать уснуть Windows 10 или как подменить действие нажатия клавиши POWER?

Прошу помощи.

Есть ноут с такой клавиатурой:


Есть огромное желание чтобы при нажатии на кнопку выключения имитировалось нажатие END.

Перепробовал разные способы. Ничего не получалось. Решил перехитрить виндовс, назначил на копку выключения сон и попытался отловить это событие.

Желаемую штуковину получилось реализовать через WM_POWERBROADCAST:

Код:
...
procedure WMPOWERBROADCAST(var Msg: TWMPOWER);  message WM_POWERBROADCAST;
...
const
  PBT_APMQUERYSUSPEND = 0;
...
procedure TForm1.WMPOWERBROADCAST(var Msg: TWMPOWER);
begin
  if TMessage(Msg).Wparam = PBT_APMQUERYSUSPEND then  // sleep
    begin
      Msg.Result := integer(BROADCAST_QUERY_DENY);  // no sleep
      keybd_event(VK_END, 0, 0, 0);                // keydown END.
      keybd_event(VK_END, 0, KEYEVENTF_KEYUP, 0); //keyup END
    end;
end;

Алгоритм четко работает на Windows XP.

К сожалению, не работает на Windows 10. Ни сон, ни гибернация на этой операционке не отлавливаются... Хз может можно как-то иначе это сделать?
Ответить с цитированием
  #2  
Старый 08.05.2020, 14:51
Goras Goras вне форума
Прохожий
 
Регистрация: 10.11.2019
Сообщения: 9
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

А в настройках что разве нельзя так сделать? Там кажется все режимы можно настраивать. У меня на 8-ке так и сделано. А другой ноут с 10-й пока что руки не дошли до всех настроек. Да мне в принципе и не надо тонких настроек.

Последний раз редактировалось Goras, 30.09.2020 в 13:51.
Ответить с цитированием
  #3  
Старый 08.05.2020, 17:50
Аватар для Guaho
Guaho Guaho вне форума
Начинающий
 
Регистрация: 27.08.2017
Сообщения: 173
Версия Delphi: Delphi7
Репутация: 10
По умолчанию

Программа AtnSoft Key Manager. Уже 100 лет как ею пользуюсь, очень удобно!
Позволяет переназначать клавиши, блокировать, ставить макросы и т.д.
Например, у меня на неиспользуемую кнопку "Win" повешено переключение языка одной кнопкой, на неиспользуемый правый Ctrl - запятая, а на соседние с ней тоже неиспользуемые кнопки - Copy/Paste. На ScrollLock-е - пуск/пауза мультимедиа, на Pause - свернуть все окна. Просто не представляю, как без такой программы можно жить)))
Ответить с цитированием
  #4  
Старый 14.05.2020, 04:47
gumel gumel вне форума
Прохожий
 
Регистрация: 29.12.2010
Сообщения: 4
Репутация: 10
По умолчанию

Цитата:
Сообщение от Goras
А в настройках что разве нельзя так сделать? Там кажется все режимы можно настраивать. У меня на 8-ке так и сделано. А другой ноут с 10-й пока что руки не дошли до всех настроек

В настройках системы на клавишу выключения ноута можно запрограммировать: либо сон, либо гибернация, либо выключение, либо бездействие. Индивидуальных хотелок не предусмотрено.
Ответить с цитированием
  #5  
Старый 14.05.2020, 04:55
gumel gumel вне форума
Прохожий
 
Регистрация: 29.12.2010
Сообщения: 4
Репутация: 10
По умолчанию

Цитата:
Сообщение от Guaho
Программа AtnSoft Key Manager. Уже 100 лет как ею пользуюсь, очень удобно!
Позволяет переназначать клавиши, блокировать, ставить макросы и т.д.
Например, у меня на неиспользуемую кнопку "Win" повешено переключение языка одной кнопкой, на неиспользуемый правый Ctrl - запятая, а на соседние с ней тоже неиспользуемые кнопки - Copy/Paste. На ScrollLock-е - пуск/пауза мультимедиа, на Pause - свернуть все окна. Просто не представляю, как без такой программы можно жить)))

Спасибо, попробую и эту. Пробовал аналогичные, функционал обычных кнопок легко менялся, в отличии от кнопки POWER. Как только я пытался поменять действие этой кнопки, то операционка (Win 10) отказывалась загружаться и, периодически перезагружаясь, начинала чего-то исправлять... Фиг знает, то ли проги в реестр что-то вносят эдакое, то ли чего, но попытки со стандартными программами у меня не увенчались успехом. Вот и решил вспомнить старую добрую Delphi. При этом на старом компе под управлением Win XP, всё заработало, а в десятке не хочет...

---

Попробовал AtnSoft Key Manager. Или я не допетрил, как можно изменить именно эту клавишу, либо прога просто не отлавливает нажатие POWER ((

Последний раз редактировалось gumel, 14.05.2020 в 05:17.
Ответить с цитированием
  #6  
Старый 14.05.2020, 18:57
Аватар для Vayrus
Vayrus Vayrus вне форума
Исполняемый Ретровирус
 
Регистрация: 09.08.2008
Адрес: Umbrella Corporation
Сообщения: 743
Репутация: 1293
По умолчанию

Приветствую, а Вы можете отследить код клавиши выключения компьютера, может на нее повесить хук и вместо выключения эмулировать нажатие нужной вам клавиши?

Второй вариант: в фоне по событиям отслеживать завершение Windows и отменять его (н-р, для надежности, можно выполнить "shutdown -a") и опять же эмулировать нажатие нужной вам клавиши? Но, есть минус, некоторые программы успеют не\корректно завершиться.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 00:27.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter