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

Вниз

Hook для блокировки компа   Найти похожие ветки 

 
ZDDR ©   (2004-04-15 22:17) [0]

Уважаемые мастера вот состряпал библотеку для блокировки управления компьтером
но проблема некоторые игры выдают ошибу когда ставится ловушка
программа выполнела недопустмую операцию
пожайлуста посоветуйте что можно сделать

library key;
uses
 WinTypes,
 WinProcs,
 Messages;

const

var
 HookHandle: hHook;

function KeyHook(Code: integer; WParam: word; LParam: Longint): Longint;stdcall
var
 wnd: hWnd;
begin
 if Code >= 0 then begin
  result:=1
 end else
   Result := CallNextHookEx(HookHandle, code, WParam, LParam); stdcall

end;

procedure SetKeyHook;
begin
 HookHandle := SetWindowsHookEx(WH_KEYBOARD, @KeyHook, HInstance, 0);
end;

procedure DelKeyHook;
begin
 if HookHandle <> 0 then
   UnhookWindowsHookEx(HookHandle);
end;

exports
 SetKeyHook index 1,
 KeyHook index 2,
 DelKeyHook index 3;

begin
end.


 
ZDDR ©   (2004-04-15 22:28) [1]

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


 
ZDDR ©   (2004-04-15 22:30) [2]

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


 
IntSer ©   (2004-04-15 22:51) [3]

библиотека
library KeyBoardHook;

uses
 Windows,
 KeyBoardExchange in "KeyBoardExchange.pas";

{$R *.res}

function KeyboardProc(Code: Integer;WPARAM: wParam; LPARAM: lParam):integer;stdcall
Begin
if Code < 0 then
 Result:=CallNextHookEx(CommonArea^.HookHandle,Code,wParam,lParam) else
  Begin
   PostMessage(CommonArea^.FormHandle,WMKeyHook,wParam,lParam);
   Result:=CallNextHookEx(CommonArea^.HookHandle,Code,wParam,lParam);
  end;
end;

function SetKeyBoardHook(Activate: Bool; ThreadId: DWord = 0): Bool;stdcall;export;
Begin
Result:=false;
 if Activate then
   Begin
    CommonArea^.HookHandle:=SetWindowsHookEx(WH_KEYBOARD,@KeyBoardProc,hInstance,ThreadId);
     Result:=(CommonArea^.HookHandle<>0);
   end else
        Begin
         if CommonArea^.HookHandle <> 0 then
          Result:=UnHookWindowsHookEx(CommonArea^.HookHandle);
          if Result then CommonArea^.HookHandle:=0;
        end;
end;

exports
SetKeyBoardHook;

begin
end.

Модуль организующий файл-мэппинг
надо его и в прогу подключать

unit KeyBoardExchange;

interface

uses Windows;

type
PHookInfo = ^THookInfo;
THookInfo = packed record
HookHandle: THandle;
FormHandle: THandle;
end;

var
WMKeyHook: integer = 0;
CommonArea: PHookInfo;

const
UniqueHookID = "{2B46D80C-A39F-44FF-B711-FF8E60286981}";
implementation
var Mapping: THandle = 0;

initialization
 Mapping:=CreateFileMapping(0,nil,PAGE_READWRITE,0,SizeOf(CommonArea),UniqueHookID);
  CommonArea:=MapViewOfFile(Mapping,FILE_MAP_ALL_ACCESS,0,0,0);
  //ЁхушёЄЁ ёюс&#8730;Єшх
 WMKeyHook:=RegisterWindowMessage(UniqueHookID);
finalization
if Assigned(CommonArea) then UnMapViewOfFile(CommonArea);
if Mapping <> 0 then CloseHandle(Mapping);
end.



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

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

Наверх




Память: 0.47 MB
Время: 0.067 c
6-1075475968
кондратий
2004-01-30 18:19
2004.05.02
INDY - атачменты...


1-1081938543
V-Isa
2004-04-14 14:29
2004.05.02
Запретить закрытие формы.


1-1082145941
tivispider
2004-04-17 00:05
2004.05.02
Как можно узнать кодировку файла (txt)?


3-1081327000
YurikGl
2004-04-07 12:36
2004.05.02
DBExpres Открытие и закрытие соединения


3-1081397756
Алексей 2
2004-04-08 08:15
2004.05.02
запрос по двум связанным таблицам