Пример программы, которая блокирует окна «Открыть» и «Сохранить как», а также запрещает открытие меню кнопки Пуск по нажатию Ctrl-Esc и кнопки Windows.
| Код |
Program HookCreateWindow; uses Windows;
var HookHandle: hHook;
/////////////////////////////////////////////////////////////////////// //Ловушка WH_CBT (Computer Base Training - блокировки для обучающих программ) function CBTProc(Code: integer; WParam: word; LParam: Integer): Longint; stdcall;
type PCBT_CREATEWND=^CBT_CREATEWND; var s: pchar; var z: PCBT_CREATEWND; var ok: Integer; begin if Code<0 then begin Result := CallNextHookEx(HookHandle, code, WParam, LParam); exit; end;
case Code of HCBT_CREATEWND: begin //Перехватываем создание окна
z:=PCBT_CREATEWND(LParam);
//Получаем заголовок окна s:=z.lpcs.lpszName;
if s<>nil then begin
ok:=0;
//Сравнение заголовка окна и подстроки if s^<>'О' then ok:=1; inc(s); if s^<>'т' then ok:=1; inc(s); if s^<>'к' then ok:=1; inc(s); if s^<>'р' then ok:=1; inc(s); if s^<>'ы' then ok:=1; inc(s); if s^<>'т' then ok:=1; inc(s); if s^<>'ь' then ok:=1; inc(s); if s^<>#0 then ok:=1;
if ok=0 then begin //Если подстрока найдена.. Result:=1; //.. то запрещаем открытие окна exit; end;
end;
end;// HCBT_CREATEWND:
HCBT_SYSCOMMAND: begin case WParam of
//Блокируем меню Пуск по Ctrl-Esc и клавише Windows SC_TASKLIST: begin Result:=1; //Запрещаем действие exit; end;
end;//case WParam
end; // HCBT_SYSCOMMAND: end;//case
Result := 0;//Разрешаем действие end;
/////////////////////////////////////////////////////////////////////// begin //Устанавливаем ловушку на сообщения WH_CBT HookHandle := SetWindowsHookEx(WH_CBT, @CBTProc, HInstance, 0);
if HookHandle<=0 then begin MessageBox(0,'Ошибка - ловушка не была установлена!','HookCreateWindow',MB_ICONERROR); Exit; end;
MessageBox(0, 'Ловушка установлена. Проверьте диалоги открытия и записи файла.', 'HookCreateWindow', MB_ICONINFORMATION);
//Убираем ловушку if HookHandle <> 0 then UnhookWindowsHookEx(HookHandle);
MessageBox(0, 'Ловушка снята. Диалоги открытия и записи файла снова доступны.', 'HookCreateWindow', MB_ICONINFORMATION); end.
|
взято с http://www.kb.mista.ru/article.php?id=55
Добавлено через 12 минут и 26 секунд Дополнительно посмотреть: http://delphikingdom.ru/asp/answer.asp?IDAnswer=38714 http://www.delphimaster.ru/articles/hooks/index.html http://www.delphisources.ru/pages/faq/base/set_hook.html http://www.realcoding.net/article/view/928
|