Форум: "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("Çàâåðøåíèå,"))<>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("Çàâåðøåíèå,"))<>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.048 c