-
В Delphi программирую недавно. Поставленная задача - Необходимо реализовать глобальный мониторинг поведения пользователя. Для начала реализовал хук WH_Keyboard. Для перехвата всех сообщений от клавиатуры сделал его в DLL. фильтр функция:
function KeyHook(CODE, WParam, LParam: DWORD): DWORD; stdcall; var ServerWnd: THandle; ScanCode:integer; begin if CODE = HC_ACTION then if ((LParam or (1 shl 30))=LParam) then begin ServerWnd:=FindWindow(nil,'Monitoring <BSSF>'); GetKeyboardState(KeybrdState); ScanCode:=(LParam shr 16)and $FF;
dmMy.DCOMConnection1.AppServer.smKeyboard(a,b);
if ToAscii(WParam,ScanCode,KeybrdState,@Symbol,0)>0 then PostMessage(ServerWnd, WM_KEYEVENT, ord(Symbol[0]), LParam) else PostMessage(ServerWnd, WM_KEYEVENT, 0, LParam); end; Result:=CallNextHookEx(HookHandle, code, WParam, LParam); end;
изначально ScanCode полученной клавиши отправлял на Основное приложение, которое осуществляет запись в файл посредством функции PostMessage и соответсвующей процедуры обработки сообщения WM_KEYEVENT в осн.приложении.
Дабы не засорять системную очередь сообщений, мне была поставлена задача реализовать связь при помощи DCOMConnection, который проходили на парах Delphi+Interbase system. Добавил серверную часть приложения, в которую добавил RemoteDataModule, а также создал Интерфейс-метод(smKeyboard) в библиотеке типов(Type Library). Плюс в клиентском - DataModule, с объектом DCOMConnection1.
При вызове интерфейс-метода dmMy.DCOMConnection1.AppServer.smKeyboard(a,b) в клиентском приложении вес работает. А вот вызов из Фильт-функции (KeyHook) не работает. подключение формы в которой описан DCOMConnection произвел, толку не дало.
Не могли бы посоветовать как решить данную проблему?
-
код могу предоставить! был совет в вызове dmMy.DCOMConnection1.AppServer.smKeyboard(a,b) заметить dmMy на Хэндл(я так понял) самого файла DMlog.pas который я подключаю в uses в DLL, после долгих поисков в интернете не наткнулся ни на чего подобного!
-
> Необходимо реализовать глобальный мониторинг поведения пользователя
обычно это незаконно
-
Обычно - да, но не когда реализуешь программу для начальника, чтобы знать чем заняты подчиненные!!
-
радмин + статистика с прокси, имхо достаточно
-
> Необходимо реализовать глобальный мониторинг поведения пользователя. > Для начала реализовал хук WH_Keyboard
Мало этого. Поможет установка видеокамеры.
-
> чтобы знать чем заняты подчиненные!!
эта отмазка уже давно не катит, а ты автоматом переходишь в разряд изготовителя а по поводу "директор сказал" темболее, больше чем уверен что за все пиратское и "спец" ПО в организации отвечать будеш ты, а не директор, ибо внезапно обнаружится бумажка с соотв. должностными обязанностями, которую ты даже никогда не видел
-
а чтобы люди работали а не вконтактились достаточно простых ограничений со стороны админа, и все...
|