Форум: "WinAPI";
Текущий архив: 2004.10.03;
Скачать: [xml.tar.bz2];
Внизблокировка комбинаций системных клавиш 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 вся ветка
Форум: "WinAPI";
Текущий архив: 2004.10.03;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.039 c