![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Прехват клавишь: 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]Не перехватываются. Зачем надо-то, может, другой способ есть ?