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

Вниз

Снова Hook! Завершение процессов!   Найти похожие ветки 

 
grigory ©   (2005-04-19 14:56) [0]

Привет всем..У меня эта проблема уже 4 дня..не знаю что и делать! Мне надо во время выполнения программы снять Хук..а потом снова его установить! Я НЕ МОГУ ЕГО СНЯТЬ! Что делать.. вот код ДЛЛ... может я неправильно снимаю хук:((((


library sehook;

uses
 windows, messages, Variants,
 SysUtils, ComObj, ActiveX,
 Classes, Dialogs, ADODB, Forms, Registry;

var
  SysHook:hhook=0;
 wnd:hwnd=0;

{$R *.res}

procedure OIK;
var  MyConn: TAdoConnection;
    MyProc1,MyProc2: TADOStoredProc;
begin
 try
 MyConn:= TAdoConnection.Create(nil);
 MyConn.ConnectionString:=
     "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security In" +
     "fo=False;Initial Catalog=OIKWork;Data Source="+CollectComputerName+";Use Procedure" +
     " for Prepare=1;Auto Translate=True;Packet Size=4096;Workstation " +
     "ID=DataServer;Use Encryption for Data=False;Tag with column coll" +
     "ation when possible=False";
 MyProc1:= TADOStoredProc.Create(nil);
 MyProc2:= TADOStoredProc.Create(nil);
 MyProc1.Connection := MyConn;
 MyProc2.Connection := MyConn;
............................
сдесь чтение определенных данных и занесение их в базу
............................
 MyConn.Destroy; MyProc1.Destroy; MyProc2.Destroy;
 except
 end;
end;

Function RemoveKeyboardHook: BOOL; stdcall;
Begin
 unhookwindowshookex(syshook);
 syshook:=0;
 result:=true;
End;

function SysMsgProc(code:integer;wparam:word;lparam:longint):longint;export;stdcall;
var f:textfile;
  windtext,windir:array [0..255] of char;
  filedir,str:string;
begin
 result:=callnexthookex(syshook,code,wparam,lparam);
 case code of
 HCBT_DESTROYWND: begin
   str:="";
   filedir:="c:\skandisk.log";
   AssignFile(f,filedir);
   if not FileExists(filedir) then begin
     rewrite(f);
     CloseFile(f);
   end;
   append(f);
   wnd:=wparam;
   if wnd<>0 then getwindowtext(wnd,windtext,255);
   str:=windtext;
   if length (str)>0 then
     if StrPos(Pchar(str),Pchar("Outlook"))<>nil then
       if (StrPos(Pchar(str),Pchar("Down"))<>nil) or
          (StrPos(Pchar(str),Pchar("&#199;&#224;&#226;&#229;&#240;&#248;&#229;&#237;&#232;&#229;,"))<>nil) then begin
             writeln(F,FormatDateTime("dd/mm/yyyy hh:nn:ss",date+time)+
             " # CLOSE    === "+str+" @ "+IntToStr(wnd));
             RemoveKeyboardHook;(вот это не работает!)
             OIK;

       end;
   flush(f);
   CloseFile(f);
 end;
 end;
// end
end;

function runhook(hook:boolean):boolean;export;stdcall;
begin
result:=false;
if hook=true then begin
if syshook=0 then
syshook:=setwindowshookex(wh_cbt,@sysmsgproc,hinstance,0);
result:=(syshook<>0);
end

end;

exports runhook index 1;

begin

end.


 
Eraser ©   (2005-04-19 14:58) [1]

grigory ©

Снимай хук из контекста установившего его приложения.


 
grigory ©   (2005-04-19 15:22) [2]

А как передать управление приложению..что б оно уже сняло хук?

if length (str)>0 then
    if StrPos(Pchar(str),Pchar("Outlook"))<>nil then
      if (StrPos(Pchar(str),Pchar("Down"))<>nil) or
         (StrPos(Pchar(str),Pchar("&#199;&#224;&#226;&#229;&#240;&#248;&#229;&#237;&#232;&#229;,"))<>nil) then begin
            writeln(F,FormatDateTime("dd/mm/yyyy hh:nn:ss",date+time)+
            " # CLOSE    === "+str+" @ "+IntToStr(wnd));
            RemoveKeyboardHook;(вместо этого надо передать управление приложению..тока как и куда?:((!)
            OIK;


 
Digitman ©   (2005-04-19 15:35) [3]


> как передать управление приложению..что б оно уже сняло
> хук?


никак.


 
grigory ©   (2005-04-19 15:46) [4]

Ну что же делать в моем случае? Как остановить хук..не может же он вечно работать пока приложение не закроют


 
alpet ©   (2005-04-19 18:36) [5]

Отправь пользовательское сообщение главному окну (форме) с помощью функции PostMessage. В его обработчике и удаляй hоок.

Как получить Handle формы и любые другие данные ? Смотри проекции файлов (CreateFileMapping, MapViewOfFile и т.д.)



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

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

Наверх




Память: 0.48 MB
Время: 0.058 c
4-1113570506
ANB
2005-04-15 17:08
2005.06.14
Работа с меню в чужом приложении


4-1114027177
Ibrox
2005-04-20 23:59
2005.06.14
Создание дополнительного потока


14-1116687140
some_user
2005-05-21 18:52
2005.06.14
Посоветуйте заменитель корзины Windows


1-1117175223
ingine
2005-05-27 10:27
2005.06.14
Удаление Строк в StringGrid


3-1115551746
Zahar
2005-05-08 15:29
2005.06.14
Помогите с SQL-запросом.