Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2005.06.14;
Скачать: [xml.tar.bz2];

Вниз

Снова 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 вся ветка

Форум: "WinAPI";
Текущий архив: 2005.06.14;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.042 c
6-1111590160
bober
2005-03-23 18:02
2005.06.14
подключение диска


3-1115273164
Belkova
2005-05-05 10:06
2005.06.14
ShowModal и locate


4-1113987033
LineSoft
2005-04-20 12:50
2005.06.14
Управление принтерами


4-1114198142
oleg_SYS
2005-04-22 23:29
2005.06.14
Инфа по DeviceIOControl


6-1111951833
Змей
2005-03-27 23:30
2005.06.14
webbrowser





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский