TLama

Untitled

Aug 7th, 2013
360
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Delphi 1.98 KB | None | 0 0
  1. unit Unit1;
  2.  
  3. interface
  4.  
  5. uses
  6.   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  7.   Dialogs, StdCtrls, CefVcl, CefLib;
  8.  
  9. type
  10.   TMyRenderProcessHandler = class(TCefRenderProcessHandlerOwn)
  11.   protected
  12.     function OnBeforeNavigation(const browser: ICefBrowser;
  13.       const frame: ICefFrame; const request: ICefRequest;
  14.       navigationType: TCefNavigationType; isRedirect: Boolean): Boolean;
  15.       override;
  16.   end;
  17.  
  18. type
  19.   TForm1 = class(TForm)
  20.     procedure FormCreate(Sender: TObject);
  21.   private
  22.     FChromium: TChromium;
  23.   public
  24.     { Public declarations }
  25.   end;
  26.  
  27. var
  28.   Form1: TForm1;
  29.   MiddleDown: Boolean;
  30.  
  31. implementation
  32.  
  33. {$R *.dfm}
  34.  
  35. function MouseProc(nCode: Integer; wParam: WPARAM; lParam: LPARAM): LRESULT; stdcall;
  36. var
  37.   HookStruct: TMouseHookStruct;
  38. begin
  39.   HookStruct := PMouseHookStruct(lParam)^;
  40.  
  41.   if (nCode >= 0) then
  42.   begin
  43.     case wParam of
  44.       WM_MBUTTONDOWN: MiddleDown := True;
  45.       WM_LBUTTONDOWN, WM_RBUTTONDOWN: MiddleDown := False;
  46.     end;
  47.   end;
  48.  
  49.   Result := CallNextHookEx(0, nCode, wParam, lParam);
  50. end;
  51.  
  52. procedure TForm1.FormCreate(Sender: TObject);
  53. var
  54.   ThreadID: DWORD;
  55. begin
  56.   FChromium := TChromium.Create(Self);
  57.   FChromium.Parent := Self;
  58.   FChromium.SetBounds(8, 8, 500, 500);
  59.   FChromium.Load('http://www.google.com');
  60.  
  61.   ThreadID := GetWindowThreadProcessId(FChromium.Browser.Host.WindowHandle, nil);
  62.   SetWindowsHookEx(WH_MOUSE, MouseProc, 0, ThreadID);
  63. end;
  64.  
  65. { TMyRenderProcessHandler }
  66.  
  67. function TMyRenderProcessHandler.OnBeforeNavigation(
  68.   const browser: ICefBrowser; const frame: ICefFrame;
  69.   const request: ICefRequest; navigationType: TCefNavigationType;
  70.   isRedirect: Boolean): Boolean;
  71. begin
  72.   Result := False;
  73.  
  74.   if MiddleDown and (navigationType = NAVIGATION_LINK_CLICKED) then
  75.   begin
  76.     Result := True;
  77.     ShowMessage('Link was clicked by a middle mouse button!');
  78.   end;
  79. end;
  80.  
  81. initialization
  82.   CefRenderProcessHandler := TMyRenderProcessHandler.Create;
  83.  
  84. end.
Advertisement
Add Comment
Please, Sign In to add comment