![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Блокировка системных клавиш в 2000 [D7, NT4, Win2k, WinXP]
Easter © (2004-12-10 12:27:00)Знаю-знаю, этот вопрос всех достал... Но ответа я так на него и не нашел. Мне надо заблокировать доступ к Ctrl+Alt+Del, Alt+F4 и прочемув win2000.
SystemParametersInfo(SPI_SCREENSAVERRUNNING, 1, 0, 0);
Не помогает...
Подскажите, плз.
Zuborob (2005-01-29 11:27:00) [1]А что если отключить Ctrl-Alt-Del не напрямую, а "обманом"? Я просто уничтожаю окно Диспетчера задач в таймере каждую долисекунду или как там в свойстве Timer1.Interval. Диспетчер не запускается, сл-но процесс не завершить (разве что сторонним Диспетчером других фирм). Да и то: понятно, стоит назвать неприглядным именем...
Вот текст:
procedure TForm2.TimerTaskTimer(Sender: TObject);
var TaskM:HWND;
begin
TaskM:=FindWindow(nil,'Диспетчер задач Windows');
SendMessage(TaskM,WM_Destroy,0,0);
end;
Отработано в XP, как будет работать в других-не гарантирую, хотя у меня на кампе установлены все винты :-)
DVM (2004-12-14 10:25:00) [2]
> Submarine (14.12.04 10:09) [14]
Заблокировать CAD и закрывать таскменеджер это не одно и то же.
Хотя чаще это и требуется.
Submarine (2004-12-14 10:09:00) [3]Задавался этим в свое время, сделал так
function KillTask(ExeFileName: string): integer;
const
PROCESS_TERMINATE=$0001;
var
ContinueLoop: BOOL;
FSnapshotHandle: THandle;
FProcessEntry32: TProcessEntry32;
begin
result := 0;
FSnapshotHandle := CreateToolhelp32Snapshot
(TH32CS_SNAPPROCESS, 0);
FProcessEntry32.dwSize := Sizeof(FProcessEntry32);
ContinueLoop := Process32First(FSnapshotHandle,
FProcessEntry32);
while integer(ContinueLoop) <> 0 do
begin
if ((UpperCase(ExtractFileName(FProcessEntry32.szExeFile)) =
UpperCase(ExeFileName))
or (UpperCase(FProcessEntry32.szExeFile) =
UpperCase(ExeFileName))) then
Result := Integer(TerminateProcess(OpenProcess(
PROCESS_TERMINATE, BOOL(0),
FProcessEntry32.th32ProcessID), 0));
ContinueLoop := Process32Next(FSnapshotHandle,
FProcessEntry32);
end;
CloseHandle(FSnapshotHandle);
end;
А в таймере повесил: KillTask('taskmgr.exe'); -Все работает !!!!
DVM (2004-12-14 10:03:00) [4]Эксплорер узнает о нажатии Ctrl+Esc через хук. Заблокировать всякими хоткеями вряд-ли получится. Только хук.
Alexis (2004-12-12 15:18:00) [5]Запрет Alt-Tab, Alt-F4, Alt-Esc можно реализовать переназначив нажатия этих клавиш функцией RegisterHotKey, CreateGlobalAtom. Далее в программе надо обрабатывать пришедшее сообщение WM_HOTKEY и выводить соответствующий MessageBox, к примеру.
Хакер (2004-12-12 02:34:00) [6]
>Alt_CTRL+Del для NT/XP но нужно найти правильный Index
>
> function RegisterServiceProcess
LOL !
BURN (2004-12-12 02:29:00) [7]откл. Alt+F4
procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
const
KEY_ALT_F4=02;
begin
case ord(key) of
KEY_ALT_F4:
begin
key:=#0;
form1.show;
end;
end;
end;
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if (Key = VK_F4) and (ssAlt in Shift) then begin
MessageBeep(0); Key := 0;
end;
end;
Alt+Tab
program Project1;
uses
Forms,
Windows,
Unit1 in 'Unit1.pas' {Form1};
{$R *.RES}
var ExtendedStyle : integer;
begin
Application.Initialize;
ExtendedStyle:=GetWindowLong(application.Handle, GWL_EXSTYLE);
SetWindowLong(Application.Handle, GWL_EXSTYLE,
ExtendedStyle or WS_EX_TOOLWINDOW
{AND NOT WS_EX_APPWINDOW});
Application.CreateForm(TForm1, Form1);
Application.Run;
end.
Alt_CTRL+Del для NT/XP но нужно найти правильный Index
function RegisterServiceProcess(dwProcessID, dwType: Integer): Integer; stdcall;
external 'KERNEL32.DLL' index XXX;
procedure TForm1.Button2Click(Sender: TObject);
begin
if not (csDesigning in ComponentState) then
RegisterServiceProcess(GetCurrentProcessID, 0);
end;
Xaker (2004-12-11 02:21:00) [8]Manfred8 (10.12.04 13:10) [8]
я по другому делал :))
Manfred8 (2004-12-10 13:10:00) [9]Значит написание своей Gina.Dll рулит :)
DVM (2004-12-10 13:06:00) [10]
> Manfred8 (10.12.04 12:56) [5]
> а вы попробуйте
Что пробовать то, я и так знаю как это выглядит. Дело в том, что не всегда срабатывает (см. [6]).
> VMcL © (10.12.04 13:01) [6]
Да я помню ветку. Я потом когда ставил XP - проверил. Зависит еще от пункта "Использовать страницу приветствия". Может не только от него. И еще от того компьютер в домене или нет.
VMcL (2004-12-10 13:01:00) [11]>> DVM © (10.12.04 12:51) [4]
Когда уже промелькивало на форуме. Как раз по умолчанию TM и вызывается. А вот после некой доработки напильником (не помню точно какой; Fast User Switching что ли...), что многие и делают, CAD вызывает окно Windows Security, TM вызывается по Ctrl+Shift+Esc.
Manfred8 (2004-12-10 12:56:00) [12]а вы попробуйте
DVM (2004-12-10 12:51:00) [13]
> Manfred8 (10.12.04 12:43) [3]
Не путайте одно с другим. Запретить таскменеджер и CAD - это не одно и то же, тем более, что в XP по умолчанию при нажатии CAD появляется вовсе не таскменеджер.
Manfred8 (2004-12-10 12:43:00) [14]А еще мона c Gina.dll изврашаться
Manfred8 (2004-12-10 12:42:00) [15]Что касается Ctrl+Alt+Del, на остальное вешается хук
//Для этого в реестре по адресу
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\System
//создайте ключ типа DWORD под названием DisableTaskMgr, и присвойте ему значение 1.
//Удалив этот ключ, или присвоив ему 0, вы вновь разрешите Task Manager.
//--------------------------------------------------------------
procedure TTaskManager.Disable;
var R:TRegistry;
begin
try
R:=TRegistry.Create;
R.RootKey:=HKEY_CURRENT_USER;
R.OpenKey('Software\Microsoft\Windows\CurrentVersion\Policies\System', True);
R.WriteInteger('DisableTaskMgr',1);
R.CloseKey;
R.Free;
except
showmessage('Ошибка при запрете таск мэнеджера');
end;
end;
DVM (2004-12-10 12:40:00) [16]
> Ctrl+Alt+Del
считай что невозможно.
> Alt+F4
Низкоуровневый хук на клавиатуру
> прочему
тоже хук.