Модераторы: Poseidon, Snowy, bems, MetalFan

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как запретить Alt-CTRL-DEL, Для Windows'XP 
:(
    Опции темы
Ripper
Дата 26.1.2005, 06:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Lonely soul...
**


Профиль
Группа: Участник
Сообщений: 920
Регистрация: 30.6.2004
Где: г. Москва

Репутация: 1
Всего: 23



Ну хз.... может с помощью хуков? Поищи на форуме
Я помню что записывал нажатия клавиш хуками. вроде как можно отловить и другие клавиши. хотя хз... насчет СaD первый пример хорошо подходит


--------------------
"Он знает: надо смеяться над тем, что тебя мучит, иначе не сохранишь равновесия, иначе мир сведет тебя с ума" - Над кукушкиным гнездом
PM MAIL ICQ   Вверх
Zero
Дата 27.1.2005, 01:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2169
Регистрация: 23.10.2004
Где: Россия, г. Рязань

Репутация: 8
Всего: 24



Поднимаю тему. Только тут дополнение, не ALT-CTRL_DEL, т.к. это сделано, а ALT-TAB, точнее как его запретить для Windows'XP.
PM MAIL ICQ   Вверх
ДЫМ
Дата 27.1.2005, 03:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 224
Регистрация: 6.1.2004

Репутация: 8
Всего: 8



А может hook на клавиатуру? Сам я в этом не силен, но знающие люди, думаю, подскажут.
PM MAIL WWW   Вверх
Akella
Дата 27.1.2005, 11:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 36
Всего: 329



Мне кажется, что все эти клавиши и сочетания можно отключить в реестре или в политиках
PM MAIL   Вверх
Akella
Дата 27.1.2005, 11:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 36
Всего: 329



зависит, конечно от ОС

Это сообщение отредактировал(а) dsergey - 27.1.2005, 11:52
PM MAIL   Вверх
Bes
Дата 27.1.2005, 12:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 806
Регистрация: 8.12.2004

Репутация: 5
Всего: 7



Если задача - спрятать программу, (а я так думаю, задача именно такая):
1) Не подозрительно ли будет отсутствие таких замечательных клавиш? :-)
2) чтобы убрать прогу отовсюду (кроме диспетчера задач, где можно подобрать красивое имя типа "ntkernel32" чтобы руки не чесались закрыть) надо свойство Application.showmainform:=false;
3) идеальный вариант прицепляться к другим процессам типа explorer.exe только я так не пробовал
PM MAIL   Вверх
Zero
Дата 27.1.2005, 18:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2169
Регистрация: 23.10.2004
Где: Россия, г. Рязань

Репутация: 8
Всего: 24



Цитата(dsergey @ 27.1.2005, 11:38)
Мне кажется, что все эти клавиши и сочетания можно отключить в реестре или в политиках

dsergey а ты не знаешь, какой ключь надо использовать.
Цитата(dsergey @ 27.1.2005, 11:52)
зависит, конечно от ОС

W'XP+SP2
Добавлено @ 18:04
Да, <Windows>+D тоже бы надо обрать как-нибудь.
PM MAIL ICQ   Вверх
W_A_K_E
Дата 30.1.2005, 01:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 26
Регистрация: 14.1.2005

Репутация: нет
Всего: нет



У меня такой компонент был просто ставишь его на форму и настраиваешь параметры невидимости
У меня был пока жесткий не полетелsmile...
Извени название не помню

А еще в виде паса на какомто сайте валялся...

Это сообщение отредактировал(а) W_A_K_E - 30.1.2005, 01:29
PM MAIL   Вверх
ДЫМ
Дата 30.1.2005, 05:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 224
Регистрация: 6.1.2004

Репутация: 8
Всего: 8



Если надо просто отключить клавишу Windows Logo в приложении, то вот, что я придумал. Проверял, - работает железно. smile

Выставляем KeyPreview=True
Код


procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
 Shift: TShiftState);
begin
// если нажали Windows Logo эмулируем нажатие Esc
if Key in [VK_LWIN,VK_RWIN]  then  keybd_event(VK_ESCAPE, 1, 0, 0);
end;


Если надо запретить реакцию на Win+D, то делаем так:
кидаем на форму ApplicationEvents, и пишем обработчик события OnDeactivate
Код

procedure TForm1.ApplicationEvents1Deactivate(Sender: TObject);
begin
  ShowWindow(Form1.Handle,SW_SHOW);
  SetForegroundWindow(Form1.Handle);
end;


Вдобавок можно отменить реакцию на минимизацию формы
(взято из DRKB)
Код


type
 TForm1 = class(TForm)
...
private
   { Private declarations }
   procedure WMSysCommand(var Msg: TWMSysCommand);
   message WM_SYSCOMMAND;
 public
   { Public declarations }
 end;
...

procedure TForm1.WMSysCommand;
begin
 if (Msg.CmdType <> SC_MINIMIZE) then inherited;
end;



PM MAIL WWW   Вверх
Zero
Дата 30.1.2005, 13:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2169
Регистрация: 23.10.2004
Где: Россия, г. Рязань

Репутация: 8
Всего: 24



Цитата
Если надо запретить реакцию на Win+D, то делаем так:
кидаем на форму ApplicationEvents, и пишем обработчик события OnDeactivate

ДЫМ а я когда на форму кидаю ApplicationEvents, то у меня появляется такое:
Код

procedure TForm1.ApplicationEvents1ActionExecute(Action: TBasicAction;
 var Handled: Boolean);
begin

end;

Точнее сказать ApplicationEvents1ActionExecute, а не ApplicationEvents1Deactivate
И кстати, мне нужно именно запретить Win+D, а не для отдельных прог, чтобы не работала.
PM MAIL ICQ   Вверх
ДЫМ
Дата 31.1.2005, 05:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 224
Регистрация: 6.1.2004

Репутация: 8
Всего: 8



Цитата

ДЫМ а я когда на форму кидаю ApplicationEvents, то у меня появляется такое:
Код 
Код


procedure TForm1.ApplicationEvents1ActionExecute(Action: TBasicAction;
var Handled: Boolean);
begin

end;  


Точнее сказать ApplicationEvents1ActionExecute, а не ApplicationEvents1Deactivate


Если я правильно понял, то ты дважды кликаешь на ApplicationEvents1, вот и появляется обработчик OnActionExecute. Надо в инспекторе объектов найти строчку OnDeactivate, на вкладке Events и кликать на ней.

А вообще-то, еще та оказалась задачка. Попробовал последнее средство - поставил глобальный хук на клавишу Windows и сочетание Win+D.

Одиночное нажатие блокируется начисто (что тоже немало), но для Win+D происходит следующее:
сначала все окна сворачиваются, а затем событие уже попадает в мою ловушку.
Выходит, что по-любому система сама сначала обрабатывает комбинацию Win+D, и только затем событие передается в ловушку.

Единственное, что можно сделать, так это восстановить все окна после нажатия Win+D. Получается такое мигание, сначала все сворачивается, а затем восстанавливается. Вот код:

Ловушка

Код

library DisableKey;

uses
 SysUtils,
 Classes,
 Windows,
 Messages;

const
{handle для ловушки}
 HookHandle: hHook = 0;

function Key_Hook(Code: integer; wParam: word;
 lParam: Longint): Longint; stdcall; export;

begin
 case wParam of
  // Клавиша 'D'
  68:
   // если одновременно нажаты клавиши Windows
   if (GetKeyState(VK_LWIN)<1) or (GetKeyState(VK_RWIN)<1) then
      // эмулируем нажатие 'D' (все окна снова восстанавливаются)
      keybd_event(68, 1, 0, 0);
  // одиночные нажатия клавиш Windows
  VK_LWIN,VK_RWIN:
     //эмулируем нажатие Esc
     keybd_event(VK_ESCAPE, 1, 0, 0);
 end;//case

 Result := CallNextHookEx(HookHandle, Code, wParam, lParam);
end;

procedure Hook(lRun:Boolean); export; stdcall;
begin
if lRun then
 HookHandle:=SetWindowsHookEx(WH_KEYBOARD,@Key_Hook,HInstance,0)
else
 begin
  UnhookWindowsHookEx(HookHandle);
  HookHandle:=0;
 end;
end;

exports Hook;

begin
end.



А это вызов Dll в модуле формы

Код


...

implementation

{$R *.dfm}

// Ловушка
procedure Hook(lRun:Boolean) stdcall; external 'DisableKey' name 'Hook';


procedure TForm1.FormCreate(Sender: TObject);
begin
// устанавливаем ловушку
Hook(True);
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
// отключаем ловушку
Hook(False);
end;
...


Цитата

dsergey

Мне кажется, что все эти клавиши и сочетания можно отключить в реестре или в политиках 



Вот еще почитай (только работает это кажется после перезагрузки) :

Цитата

Запрещение горячих клавиш с Windows Logo

В конце статьи я приведу недокументированную системную политику, отключающую использование горячих клавиш Windows, которая поддерживается в Windows 9.x, Millenium, 2000 и XP.
Эта системная политика блокирует обработку клавиши "Windows Logo" в горячих клавишах. Однако после того как эта политика будет активизирована, одиночное нажатие клавиши "Windows Logo", которое вызывает меню "Пуск", будет отрабатываться. Также, необходимо отметить, что с этой включенной политикой нажатие "Windows Logo" в комбинациях клавиш будет игнорироваться, остальные нажатия будут обрабатываться как обычно.
Для ее активизации необходимо создать параметр "NoWinKeys" типа DWORD в следующей ветви системного реестра: "Software\Microsoft\Windows\CurrentVersion\Policies\Explorer" и установить его значение в 1. Установка параметра "NoWinKeys" в 0 или его отсутствие отключает политику.
Этот параметр может храниться в реестре Windows как в разделе HKEY_CURRENT_USER, так и в разделе HKEY_LOCAL_MACHINE и иметь область действия либо на весь "Компьютер" (Local Machine), либо на "Текущего пользователя" (Current User) соответственно.
Политика, имеющая область действия весь "Компьютер", хранящаяся в разделе системного реестра HKEY_LOCAL_MACHINE имеет приоритет над, политикой хранящейся в разделе HKEY_CURRENT_USER и имеющей область действия "Текущего пользователя".






PM MAIL WWW   Вверх
Zero
Дата 31.1.2005, 10:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2169
Регистрация: 23.10.2004
Где: Россия, г. Рязань

Репутация: 8
Всего: 24



Спасибо!!! Понял.
PM MAIL ICQ   Вверх
ДЫМ
Дата 5.2.2005, 02:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 224
Регистрация: 6.1.2004

Репутация: 8
Всего: 8



PM MAIL WWW   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1098 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.