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

Вниз

Hook   Найти похожие ветки 

 
gary   (2006-12-14 16:28) [0]

Поставил  локальный  hook  на  wm_rbuttondown  для форми,  и аннулировал  это  сообщение,
но  компонент  webbrowser  при ссылке  на  html  документ  делает  ошибку  типа:  слишком много последовательные исключения, как  избавится от этои ошибки


 
Eraser ©   (2006-12-14 16:31) [1]

> [0] gary   (14.12.06 16:28)

код в студию.


 
gary   (2006-12-15 17:41) [2]

library hook_dll1;

uses
 Windows,
 Messages,
 Forms,
 ShDocVw,
 controls,
 Unit1 in "Unit1.pas" {Form1};

const
 MMFName: PChar = "MyMMF";
type
 PGlobalDLLData = ^TGlobalDLLData;
 TGlobalDLLData = packed record
   SysHook: HWND;
 end;

var
 GlobalData: PGlobalDLLData;
 MMFHandle: THandle;

function SysMsgProc(code : integer; wParam : word; lParam : longint) : longint; stdcall;
begin

 if code = HC_ACTION then
 begin
   if TMsg(Pointer(lParam)^).message = WM_RBUTTONDOWN then
   begin
        MessageBox( 0, "Ther is no any context!", "Message from HookDll", 0 );
    TMsg(Pointer(lParam)^).message := WM_NULL;
   end;
 end;
   Result:= CallNextHookEx(GlobalData^.SysHook, Code, wParam, lParam);

end;

procedure hook(switch : Boolean) export; stdcall;
begin

 if switch=true then
 begin
      GlobalData^.SysHook := SetWindowsHookEx(WH_GETMESSAGE, @SysMsgProc, HInstance,
                           GetWindowThreadProcessId(FindWindow("TForm1", "Form1"), nil ));
   if GlobalData^.SysHook <> 0 then
       MessageBox(0, "HOOK1 &#243;&#241;&#242;&#224;&#237;&#238;&#226;&#235;&#229;&#237; !", "Message from Process1", 0)
     else
       MessageBox(0, "HOOK1 &#243;&#241;&#242;&#224;&#237;&#238;&#226;&#232;&#242;&#252; &#237;&#229; &#243;&#228;&#224;&#235;&#238;&#241;&#252; !", "Message from Process1", 0);

 end
 else
 begin

       if UnhookWindowsHookEx(GlobalData^.SysHook) then
     MessageBox(0, "HOOK1 &#241;&#237;&#255;&#242; !", "Message from Process1", 0)
   else
     MessageBox(0, "HOOK1 &#241;&#237;&#255;&#242;&#252; &#237;&#229; &#243;&#228;&#224;&#235;&#238;&#241;&#252; !", "Message from Process1", 0);

 end;
end;

procedure OpenGlobalData();
begin
 SizeOf(TGlobalDLLData), MMFName);
 MMFHandle:= CreateFileMapping(INVALID_HANDLE_VALUE, nil, PAGE_READWRITE, 0, SizeOf(TGlobalDLLData), MMFName);

 if MMFHandle = 0 then
   MessageBox(0, "Can""t create FileMapping", "Message from Process1", 0);

 
 GlobalData:= MapViewOfFile(MMFHandle, FILE_MAP_ALL_ACCESS, 0, 0, SizeOf(TGlobalDLLData));
 if GlobalData = nil then
   begin
     CloseHandle(MMFHandle);
     MessageBox(0, "Can""t make MapViewOfFile", "Message from Process1", 0);
   end;

end;

procedure CloseGlobalData();
begin
 UnmapViewOfFile(GlobalData);
 CloseHandle(MMFHandle);
end;

procedure DLLEntryPoint(dwReason: DWord); stdcall;
begin
 case dwReason of
   DLL_PROCESS_ATTACH: OpenGlobalData;
   DLL_PROCESS_DETACH: CloseGlobalData;
 end;
end;

exports hook;

begin
   DLLProc:= @DLLEntryPoint;
  DLLEntryPoint(DLL_PROCESS_ATTACH);
end.

/////////////////////////////////////////////////////////////////////////////////////

от туда  вызывается этот dll

type
 MyProcType = procedure (flag : Boolean); stdcall;

procedure TForm1.Button1Click(Sender: TObject);
var
 hook: MyProcType;
begin

 @hook:= nil;

 Hdll:= LoadLibrary(PChar("hook_dll1.dll"));
 if Hdll > HINSTANCE_ERROR then            
   begin
     @hook:=GetProcAddress(Hdll, "hook");    
     Button2.Enabled:=True;
     Button1.Enabled:=False;
     hook(true);
   end
 else
   ShowMessage("&#206;&#248;&#232;&#225;&#234;&#224; &#239;&#240;&#232; &#231;&#224;&#227;&#240;&#243;&#231;&#234;&#229; DLL !");

end;

procedure TForm1.Button2Click(Sender: TObject);
var
 hook: MyProcType;
begin
 @hook:= nil;
 if Hdll > HINSTANCE_ERROR then
   begin                                      
  @hook:=GetProcAddress(Hdll, "hook");      
     Button1.Enabled:=True;
     Button2.Enabled:=False;
     hook(false);                          
   end;
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin

 FreeLibrary(Hdll);
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
 WebBrowser1.Navigate("d:\untitled1.html");

end;


 
Eraser ©   (2006-12-15 18:54) [3]

> [2] gary   (15.12.06 17:41)

попробуй заменить

>       MessageBox(0, "HOOK1 onoaiiaeou ia oaaeinu !", "Message
> from Process1", 0);

на

 Result := 1;
 Exit;


> uses
> Windows,
> Messages,
> Forms,
> ShDocVw,
> controls,
> Unit1 in "Unit1.pas" {Form1};

поудаляй лишнее из dll, здесь оно абсолютно не к чему.


 
MetalFan ©   (2006-12-15 19:26) [4]


> procedure OpenGlobalData();
> begin
>  SizeOf(TGlobalDLLData), MMFName); ЧЕЭТО????
>  MMFHandle:= CreateFileMapping(INVALID_HANDLE_VALUE, nil,
>  PAGE_READWRITE, 0, SizeOf(TGlobalDLLData), MMFName);


 
gary   (2006-12-16 15:30) [5]

заменa

      MessageBox(0, "HOOK1 onoaiiaeou ia oaaeinu !", "Message
      from Process1", 0);

на

Result := 1;
Exit;

к сожалению не помогает, может система не терпит что та

к сожалению не помогает, может  система не терпит что та


 
gary   (2006-12-16 15:49) [6]

procedure OpenGlobalData();

для передач данних остальним хукам на тот же сообщение



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

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

Наверх





Память: 0.47 MB
Время: 0.041 c
15-1176501642
Германн
2007-04-14 02:00
2007.05.13
Ищу ресурсы :-)


1-1174296970
San ciz
2007-03-19 12:36
2007.05.13
Иконака из длл в Timage. Возможно ли?


3-1172124141
userDelf
2007-02-22 09:02
2007.05.13
Проблема работы приложения на компах кроме моего


4-1166094492
niko
2006-12-14 14:08
2007.05.13
Создание окна в потоке с помощью ф-й WINAPI (в dll)


15-1176403132
РВА
2007-04-12 22:38
2007.05.13
Соединение BlueTooth моб. тел и ПК





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский