Форум: "WinAPI";
Текущий архив: 2005.03.13;
Скачать: [xml.tar.bz2];
ВнизБлокировка системных клавиш в 2000 Найти похожие ветки
← →
Easter (2004-12-10 12:27) [0]Знаю-знаю, этот вопрос всех достал... Но ответа я так на него и не нашел. Мне надо заблокировать доступ к Ctrl+Alt+Del, Alt+F4 и прочему в win2000.
SystemParametersInfo(SPI_SCREENSAVERRUNNING, 1, 0, 0);
Не помогает...
Подскажите, плз.
← →
DVM © (2004-12-10 12:40) [1]
> Ctrl+Alt+Del
считай что невозможно.
> Alt+F4
Низкоуровневый хук на клавиатуру
> прочему
тоже хук.
← →
Manfred8 (2004-12-10 12:42) [2]Что касается 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;
← →
Manfred8 (2004-12-10 12:43) [3]А еще мона c Gina.dll изврашаться
← →
DVM © (2004-12-10 12:51) [4]
> Manfred8 (10.12.04 12:43) [3]
Не путайте одно с другим. Запретить таскменеджер и CAD - это не одно и то же, тем более, что в XP по умолчанию при нажатии CAD появляется вовсе не таскменеджер.
← →
Manfred8 (2004-12-10 12:56) [5]а вы попробуйте
← →
VMcL © (2004-12-10 13:01) [6]>>DVM © (10.12.04 12:51) [4]
Когда уже промелькивало на форуме. Как раз по умолчанию TM и вызывается. А вот после некой доработки напильником (не помню точно какой; Fast User Switching что ли...), что многие и делают, CAD вызывает окно Windows Security, TM вызывается по Ctrl+Shift+Esc.
← →
DVM © (2004-12-10 13:06) [7]
> Manfred8 (10.12.04 12:56) [5]
> а вы попробуйте
Что пробовать то, я и так знаю как это выглядит. Дело в том, что не всегда срабатывает (см. [6]).
> VMcL © (10.12.04 13:01) [6]
Да я помню ветку. Я потом когда ставил XP - проверил. Зависит еще от пункта "Использовать страницу приветствия". Может не только от него. И еще от того компьютер в домене или нет.
← →
Manfred8 (2004-12-10 13:10) [8]Значит написание своей Gina.Dll рулит :)
← →
Xaker © (2004-12-11 02:21) [9]Manfred8 (10.12.04 13:10) [8]
я по другому делал :))
← →
BURN © (2004-12-12 02:29) [10]откл. 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;
← →
Хакер © (2004-12-12 02:34) [11]
>Alt_CTRL+Del для NT/XP но нужно найти правильный Index
>
> function RegisterServiceProcess
LOL !
← →
Alexis © (2004-12-12 15:18) [12]Запрет Alt-Tab, Alt-F4, Alt-Esc можно реализовать переназначив нажатия этих клавиш функцией RegisterHotKey, CreateGlobalAtom. Далее в программе надо обрабатывать пришедшее сообщение WM_HOTKEY и выводить соответствующий MessageBox, к примеру.
← →
DVM © (2004-12-14 10:03) [13]Эксплорер узнает о нажатии Ctrl+Esc через хук. Заблокировать всякими хоткеями вряд-ли получится. Только хук.
← →
Submarine (2004-12-14 10:09) [14]Задавался этим в свое время, сделал так
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:25) [15]
> Submarine (14.12.04 10:09) [14]
Заблокировать CAD и закрывать таскменеджер это не одно и то же.
Хотя чаще это и требуется.
← →
Zuborob (2005-01-29 11:27) [16]А что если отключить 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, как будет работать в других-не гарантирую, хотя у меня на кампе установлены все винты :-)
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2005.03.13;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.039 c