Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Прехват клавишь: Alt ,Ctrl и Delete [D6, D7, WinXP]


Ivolg ©   (2004-03-29 12:44:00) 

Уважаемые люди программеры помогите плиз! Мне нужно перехватить три кнопки на клаве Alt , Ctrl и Delete! Спасибо!


Игорь Шевченко   (2004-04-05 14:49:00) [1]

pasha_golub ©   (05.04.04 13:57)

Нетрудно судить - вредный вопрос.


pasha_golub   (2004-04-05 13:57:00) [2]

Anatoly Podgoretsky ©   (05.04.04 13:27) [12]

Трудно судить хороший ли это вопрос либо вредный. Нужно автора знать, чтобы понять чего пишется.


Anatoly Podgoretsky   (2004-04-05 13:27:00) [3]

WondeRu ©   (05.04.04 09:48) [10]
В fido7.ru.delphi этот вопрос перенесен не в FAQ, а в Offtopic List


Ivolg   (2004-04-05 11:15:00) [4]

да уж пора


WondeRu   (2004-04-05 09:48:00) [5]

Пора вопрос про CTRL+ALT+DEL (SAS) в FAQ переносить! Каждую неделю этот вопрос! И все заканчивается ответом: "пиши свою MSGINA.dll!"


sir John   (2004-04-04 19:22:00) [6]

может быть вот так?

const
 SPI_SCREENSAVERRUNNING = 97;
var
 OldValue: Longbool;
 {on}
 SystemParametersInfo(SPI_SCREENSAVERRUNNING, Word(True), @OldValue, 0);
 {off}
 SystemParametersInfo(SPI_SCREENSAVERRUNNING, Word(False), @OldValue, 0);
{
 Note: Runs only on Windows 95/98
 Bemerkung: Läuft nur unter Windows 95/98
}

{********************************************************}

{ Disable the TaskManager on Win NT systems (2000/XP) : }
{ (C) by Delphi.About }

uses
 Registry;

procedure EnableCTRLALTDEL(YesNo : boolean);
const
sRegPolicies = '\Software\Microsoft\Windows\CurrentVersion\Policies';
begin
 with TRegistry.Create do
 try
   RootKey:=HKEY_CURRENT_USER;
   if OpenKey(sRegPolicies+'\System\',True) then
   begin
     case YesNo of
       False:
         begin
           WriteInteger('DisableTaskMgr',1);
         end;
       True:
         begin
           WriteInteger('DisableTaskMgr',0);
         end;
     end;
   end;
   CloseKey;
   if OpenKey(sRegPolicies+'\Explorer\',True) then
   begin
     case YesNo of
       False:
         begin
           WriteInteger('NoChangeStartMenu',1);
           WriteInteger('NoClose',1);
           WriteInteger('NoLogOff',1);
         end;
       True:
         begin
           WriteInteger('NoChangeStartMenu',0);
           WriteInteger('NoClose',0);
           WriteInteger('NoLogOff',0);
         end;
     end;
   end;
   CloseKey;
 finally
   Free;
 end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
   EnableCTRLALTDEL(true);
end;



Код взят отсюда: http://www.swissdelphicenter.com/en/showcode.php?id=48


Gero   (2004-04-04 18:20:00) [7]

> ***ghost***   (29.03.04 19:15)
Гениально...

> Ivolg ©

OnKeyDown:
if (ssCtrl in Shift) and (ssAlt in Shift) and (Key = VK_DELETE) then
begin
 { А толку - ноль, все равно уже система их перехватила }
end;


Alexis   (2004-04-04 14:58:00) [8]

Почитай о прерываниях BIOS и MSDOS, касающихся клавиатуры.


Guestt   (2004-03-29 23:43:00) [9]

Где то я уже видел похожий вопрос.
Только там более кординально подошли к теме, спросили - "Как програмно клаву заблокировать?"


Cobalt   (2004-03-29 23:11:00) [10]

> ***ghost***  
LOL :)))

if (a=1) and (a=2) and (a=3) then begin ShowMessage(' Что-то тут не то...') end;


***ghost***   (2004-03-29 19:15:00) [11]

if (vk_key=alt) and (vk_key=control) and (vk_key=delete) then begin {ничего не происходит} end;Пожайлуста.


pasha_golub   (2004-03-29 13:56:00) [12]

Ivolg ©   (29.03.04 12:58) [2]
Можно. Задачу подробнее изложите, плиз.


Ivolg   (2004-03-29 12:58:00) [13]

Игорь Шевченко
даже Alt отдельно перехватить нельзя?


Игорь Шевченко   (2004-03-29 12:45:00) [14]

Не перехватываются. Зачем надо-то, может, другой способ есть ?


Наверх

Титульная страница Поиск, карта сайта Написать письмо