如题

解决方案 »

  1.   

    没有用过WebBrowser
    但是可以试试以下:
    <!--将以下代码加入HTML的<HEAD></HEAD>之间-->
    <script language="javascript">
    function click() {
    if (event.button==2) {
      alert('你想干什么?')
      }
    }
    document.onmousedown=click
    </script>
      

  2.   

    楼上的办法不行,只要我按下右键不放,用回车点去对话框,再抬起右键,菜单还会出来
    应该这样写:
    <script language="JavaScript">
    document.oncontextmenu = function(){ return false }
    </script>但是这种方法也只是让网页不弹出菜单,没有真正让TWebBrowser不弹出菜单
      

  3.   

    procedure OnAppMsg(var msg: tmsg;var handled: boolean);
    procedure TForm1.FormCreate(Sender: TObject);
    begin
      WebBrowser1.Navigate('http://www.163.com');
      Application.OnMessage := OnAppMsg;
    end;procedure TForm1.OnAppMsg(var msg: tmsg; var handled: boolean);
    begin
      if (msg.message = wm_rbuttondown) then
      begin
        showmessage(inttostr(WebBrowser1.Handle));
        showmessage(inttostr(windowfrompoint(msg.pt)));
        showmessage(inttostr(msg.lParam));
        showmessage(inttostr(longint(@msg.wParam)));
        showmessage('trap browser mouse');
      end
      else
        inherited;
    end;不过不知道为什么windowfrompoint的得到的不是WebBrowser1的handle,郁闷~~
      

  4.   

    哈哈,这样,在TWebBrowser上放一个TLabel.Caption:='';  Transparent:=true,就可以自己处理右键了。
      

  5.   

    public
        { Public declarations }
        procedure OnAppMsg(var msg: tmsg;var handled: boolean);procedure TForm1.FormCreate(Sender: TObject);
    begin
      WebBrowser1.Navigate('http://www.163.com');
      Application.OnMessage := OnAppMsg;
    end;procedure TForm1.OnAppMsg(var msg: tmsg; var handled: boolean);
    begin
      if (msg.message = wm_rbuttondown) then
      begin
        showmessage(inttostr(WebBrowser1.Handle));
        //showmessage(inttostr(windowfrompoint(ScreenToClient(msg.pt))));
       // showmessage(inttostr(msg.lParam));
        //showmessage(inttostr(longint(@msg.wParam)));
        showmessage('trap browser mouse');
      end
      else
        inherited;
    end;可惜不知道为什么windowfrompoint得到的窗口句柄是form1的句柄,而不是webbrowser的句柄
      

  6.   

    ronaldli(木的)的办法好,但是我是否可以区分出是什么样的菜单,我想队bady上的菜单和表单上的菜单有选择的进行屏蔽。
      

  7.   

    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, OleCtrls, SHDocVw, AppEvnts, Menus, StdCtrls;type
      TForm1 = class(TForm)
        WebBrowser1: TWebBrowser;
        ApplicationEvents1: TApplicationEvents;
        PopupMenu1: TPopupMenu;
        N2341: TMenuItem;
        N42341: TMenuItem;
        Label1: TLabel;
        Button1: TButton;
        Edit1: TEdit;
        procedure FormCreate(Sender: TObject);
        procedure ApplicationEvents1Message(var Msg: tagMSG;
          var Handled: Boolean);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject);
    begin
        webbrowser1.Navigate('http:\\localhost');
    end;procedure TForm1.ApplicationEvents1Message(var Msg: tagMSG;
      var Handled: Boolean);
    begin
    if ((Msg.message=wm_rbuttondown)or(Msg.message=wm_rbuttonup))  then//and (鼠标是否在webbrower内)then begin
        Handled:=true;end;