Главная страница
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.025 c
7-1078940272
ChcngerMan
2004-03-10 20:37
2004.05.02
TwainSources


3-1081353922
Алексей Комлев
2004-04-07 20:05
2004.05.02
Как получить результат TQuery в виде набора строк?


1-1081958058
DarkSet
2004-04-14 19:54
2004.05.02
Защита файлов от доступа


4-1078346506
Talla2k
2004-03-03 23:41
2004.05.02
Services!!!


1-1081926319
Net_Prosto
2004-04-14 11:05
2004.05.02
Непонятка с TStringList, как записать в файл? а потом прочесть