![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Блокировка TaskManager
Глеб © (2004-06-14 10:13:00)Как мне заблокировать комбинацию клавиш Ctrl+Alt+Del, чтобы при их нажатии не появлялся TaskManager - менеджер задач?
Vit@ly (2004-06-15 17:39:00) [1]> Игорь Шевченко © (15.06.04 17:33) [14]
Возможно не решает, я отметил, что сам не проверял этот код
Игорь Шевченко (2004-06-15 17:33:00) [2]Vit@ly © (15.06.04 17:31)
> Question/Problem/Abstract: Disable CTRL + ALT + DEL (Task
> Manager) under 2000 and XP
Этот код не решает проблемы
Vit@ly (2004-06-15 17:31:00) [3]Сам не тестил
Question/Problem/Abstract: Disable CTRL + ALT + DEL (Task Manager) under 2000 and XP
Trying to prevent Task manager from running.
Answer:
I found one another way to prevent Task Manager.
Just check for taskmgr.exe in the process list and if it there kill it.
Put a timer on your form. With Interval = 1.
unit UnitMain;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, TlHelp32, ExtCtrls;
type
TForm1 = class(TForm)
Timer1: TTimer;
procedure Timer1Timer(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
proc : PROCESSENTRY32;
hSnap : HWND;
Looper : BOOL;
implementation
procedure KillProcess;
begin
proc.dwSize := SizeOf(Proc); //Give Proc.dwSize The Size Of Its Bytes
hSnap := CreateToolhelp32Snapshot(TH32CS_SNAPALL,0); //Takes A Snapshop Of The Process And Give It To hSnap
Looper := Process32First(hSnap,proc); //First Process
while Integer(Looper) <> 0 do //If The Process is not nil
begin
if ExtractFileName(Proc.szExeFile) = 'taskmgr.exe' then //Extracts the process filename and compares
if TerminateProcess(OpenProcess(PROCESS_TERMINATE,Bool(1),proc.th32ProcessID),0) then //Terminates the OpenProcess
else
Looper := Process32Next(hSnap,proc); //Checks for the next process
end;
CloseHandle(hSnap); //Closes The Handle
end;
{$R *.dfm}
procedure TForm1.Timer1Timer(Sender: TObject);
var
keyloop, KeyResult : Integer;
begin
keyloop := 0;
repeat
KeyResult := GetAsyncKeyState(keyloop);
if KeyResult = -32767 then
begin
if (keyloop = 46) or (keyloop = 110) then
KillProcess;
end;
inc(keyloop);
until keyloop = 255;
end;
end.
Игорь Шевченко (2004-06-15 17:30:00) [4]RagE © (15.06.04 17:22)
> Даже хуки не помогут?
Какие хуки ?
В XP есть документированный способ, отключения через реестр. В NT/Win2k этот способ не работает
Vit@ly (2004-06-15 17:29:00) [5]См. DVM © (14.06.04 14:00) [2]
RagE (2004-06-15 17:22:00) [6]>Игорь Шевченко
Даже хуки не помогут?
Игорь Шевченко (2004-06-15 11:39:00) [7]
> Да, как мне отключить комбинации в Windows NT/2000/
Никак
Глеб (2004-06-15 10:26:00) [8]Да, как мне отключить комбинации в Windows NT/2000/XP?
(2004-06-15 10:16:00) [9]Удалено модератором
Сергей Ю. (2004-06-15 09:58:00) [10]А как отключить в NT/XP?
}{enon (2004-06-15 09:43:00) [11]Присвоить проге статус заставки (при это блокируется также Alt+Tab). Смотри FAQ: http://www.delphimaster.ru/cgi-bin/faq.pl?look=1&id=988622625&n=15
DrPass (2004-06-14 19:34:00) [12]В "Управлении компьютером" в политиках безопасности запрети запуск TaskManager
Burmistroff (2004-06-14 14:05:00) [13]Есть кстати еще один - сабклассить окно winlogon :)
DVM (2004-06-14 14:00:00) [14]
> никак
Чтобы именно не появлялся TaskManager есть два способа:
1) Отслеживать появление его окна и закрывать (хук или таймер)
2) Ключ в реестре какой-то (DisableTakMgr что ли).
kot (2004-06-14 11:05:00) [15]никак