Форум: "WinAPI";
Текущий архив: 2004.12.12;
Скачать: [xml.tar.bz2];
ВнизПример low level хука Найти похожие ветки
← →
Сергей К. © (2004-10-29 10:12) [17]
function SetHook(Const Hook : Boolean = false; hMainProg: HWND = 0; HotKeyList :String = "") : Boolean; export; stdcall;
var
Str :PList;
begin
Result := False;
If hook then begin
MMFHandle1 := CreateFileMapping(INVALID_HANDLE_VALUE, nil, PAGE_READWRITE, 0, SizeOf(TList), MMF1);
if MMFHandle1 = 0 then Exit;
Str := MapViewOfFile(MMFHandle1, FILE_MAP_ALL_ACCESS, 0, 0, SizeOf(TList));
if Str = nil then Begin CloseHandle(MMFHandle1); exit; end;
Str^.List := HotKeyList;
GlobalData^.MyAppWnd:= hMainProg;
GlobalData^.SysHook := SetWindowsHookEx(WH_KEYBOARD, @SysMsgProc, HInstance, 0);
if GlobalData^.SysHook <> 0 then Result := True;
end else begin
CloseHandle(MMFHandle1);
if UnhookWindowsHookEx(GlobalData^.SysHook) then Result := True;
end;
end;
procedure OpenGlobalData(); stdcall;
begin
MMFHandle2 := CreateFileMapping(INVALID_HANDLE_VALUE, nil, PAGE_READWRITE, 0, SizeOf(TGlobalData), MMF2);
If MMFHandle2 = 0 then Exit;
GlobalData := MapViewOfFile(MMFHandle2, FILE_MAP_ALL_ACCESS, 0, 0, SizeOf(TGlobalData));
if GlobalData = nil then begin CloseHandle(MMFHandle2); Exit; end;
end;
procedure CloseGlobalData();
begin
UnmapViewOfFile(GlobalData);
CloseHandle(MMFHandle2);
end;
procedure DLLEntryPoint(dwReason: DWord); stdcall;
begin
case dwReason of
DLL_PROCESS_ATTACH: OpenGlobalData;
DLL_PROCESS_DETACH: CloseGlobalData;
end;
end;
exports
Sethook;
begin
// нажата комбинация
WM_HOOK_KEYPRESSED := RegisterWindowMessage("WM_HOOK_KEYPRESSED");
// заблокирована комбинация
WM_HOOK_KEYBLOCK := RegisterWindowMessage("WM_HOOK_KEYBLOCK");
// режим блокировки всх комбинаций
WM_HOOK_KEYALLBLOCK := RegisterWindowMessage("WM_HOOK_KEYALLBLOCK");
// назначим поцедуру переменной DLLProc
DLLProc:= @DLLEntryPoint;
// вызываем назначенную процедуру для отражения факта присоединения данной библиотеки к процессу
DLLEntryPoint(DLL_PROCESS_ATTACH);
end.
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2004.12.12;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.032 c