Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "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.038 c
4-1107247208
AlexTregubov
2005-02-01 11:40
2005.03.13
И снова о редиректе StdOut


3-1108037879
Denmin
2005-02-10 15:17
2005.03.13
Можно ли в таблице поставить фильтр?


1-1109391605
nap
2005-02-26 07:20
2005.03.13
+,-,*,/


3-1107858771
Manfred8
2005-02-08 13:32
2005.03.13
TClientDataSet.Locate не работает с кириллицей?


3-1108038233
midavik
2005-02-10 15:23
2005.03.13
Время выполнения запроса.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский