Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.10.03;
Скачать: CL | DM;

Вниз

блокировка комбинаций системных клавиш Windows   Найти похожие ветки 

 
bss   (2004-08-26 10:05) [0]

Перехватываю с помощью хуков (SetWindowsHookEx) нажатия клавиш. При этом надо поставить на сочетания клавиш c Ctrl и Alt свой обработчик, а стандартные действия на эти сочетания отменить. Перехват нажатия клавиш действительно происходит и заданные обработчиком действия выполняются, но при этом выполняются и стандартные действия Windows.

Пример кода:

function SysMsgProc(code : integer; wParam : word; lParam : longint) : longint; stdcall;
var
  wnd: HWND;
  plock: boolean;
begin
 if code = HC_ACTION then
 begin
  if lParam>31  then
  begin
       if wParam = VK_F1 // Обработчик на клавишу F1
       begin
            wnd := FindWindow("TForm1", "");
            SendMessage(wnd, WM_MYKEYHOOK, wParam, 0);
            Result := 1;
       end
       else
           Result := 0;
  end;
 end
 else
   Result:= CallNextHookEx(GlobalData^.SysHook, Code, wParam, lParam);
end;

Не подскажет ли уважаемая публика, что я делаю не так?


 
TUser ©   (2004-08-26 11:21) [1]

Result:= CallNextHookEx(GlobalData^.SysHook, Code, wParam, lParam);
Вот это убери, хакер :)


 
bss   (2004-08-26 12:00) [2]

Убрано...
все равно после отработки сообщения WM_MYKEYHOOK на клавиши F1, Alt-tab и т.п. система начинает исполнять стандартные процедуры Windows.
Вообще, задача заставить пользователя работать только с определенной программой, убрав возможность запускать что-либо иное. Возможно можно решить задачу по-другому...Может быть будут какие-нибудь советы?
С уважением!!!


 
Dimka-gl ©   (2004-08-26 12:33) [3]

Пропишите в реестре программы, доступные к запуску и всё.


 
GrayFace ©   (2004-08-26 13:03) [4]

В Win9x это легко делается.

Dimka-gl ©   (26.08.04 12:33) [3]
Пропишите в реестре программы, доступные к запуску и всё.

А это еще как?


 
Manfred8   (2004-08-26 13:39) [5]

В WinNt/2000/XP есть низкоуровневй клавиатурный хук
типа WH_KEYBOARD_LL оно поможет.Я таким образом отрубаю клавиши Win,Alt+tab итд. Все кроме ctrl+alt+del


 
beatles_bntu ©   (2004-08-26 14:01) [6]

Все работае как часы тока это неблокирует Ctrl+Alt+Del и на клавишу Win срабатывает но неперекрывает хотя ее моно воше скажем так удалить.
unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, StdCtrls;

type
 TForm1 = class(TForm)
   Button1: TButton;
   procedure Button1Click(Sender: TObject);
   procedure FormClose(Sender: TObject; var Action: TCloseAction);
 private
    Procedure WMHotkey( Var msg: TWMHotkey );message WM_HOTKEY;
   { Private declarations }
 public
   { Public declarations }
 end;

var
 Form1: TForm1;
implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
 RegisterHotkey(Handle,1,MOD_ALT, VK_TAB);
end;

procedure TForm1.WMHotkey(var Msg:TWMHotkey);
begin
 if(Msg.hotkey=1)then
 begin
   If IsIconic(Application.Handle) Then
   begin
     Application.Restore;
     {PostMessage(Handle,WM_NULL,0,0);
     ASSERT(mm,"");}
   end;
   BringToFront;
 end;
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
 UnRegisterHotkey(Handle,1);
end;

end.


 
Dimka-gl ©   (2004-08-26 23:13) [7]

Про реестр: http://win-reg.narod.ru/

p.s. Вам надо пункт меню Windows в зависимости от версии.


 
bss   (2004-08-27 10:16) [8]

Всем большое спасибо!!!
Действительно очень помогли!
И с реестром (автозагрузка) проблему решать пришлось в любом случае.



Страницы: 1 вся ветка

Текущий архив: 2004.10.03;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.03 c
1-1095422491
Tolik
2004-09-17 16:01
2004.10.03
ресурсы в DLL


14-1094732606
Sancho
2004-09-09 16:23
2004.10.03
memproof.hlp


9-1083579189
OSokin
2004-05-03 14:13
2004.10.03
Максимально возможная игра


1-1095413551
Чайник
2004-09-17 13:32
2004.10.03
и снова цвет...


1-1095171547
Vladimir_
2004-09-14 18:19
2004.10.03
Помогите с TreeView