怎样屏蔽掉shockwaveflash控件的右键菜单?以便使用自己的菜单。如果用消息机制的话,能否给出具体实现代码?急等!!!谢谢!!!!!!!!!

解决方案 »

  1.   

    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;
      

  2.   

    create中:
      application.onmessage:=mymessage;
    PUBLISH中:
      procedure mymessage(var msg:tmsg;var handled:boolean);procedure TForm1.mymessage(var msg: tmsg; var handled: boolean);
    begin
      if (msg.message=wm_rbuttondown) and (msg.hwnd=ShockwaveFlash1.handle) then
      begin
        popupmenu1.Popup(Mouse.CursorPos.X,Mouse.CursorPos.Y);
        handled:=true;
      end;
    end;
      

  3.   

    procedure TForm1.ApplicationEvents1Message(var Msg: tagMSG;
      var Handled: Boolean);
    var
      mPoint : TPoint;
    begin
      //if IsChild(Flash1.Handle, Msg.Hwnd) then
      if   ((Msg.Message = WM_RBUTTONDOWN) or (Msg.Message = WM_RBUTTONUP))  then
      begin
        GetCursorPos(mPoint);
        //如果去掉下面这行就是屏蔽右键菜单,不去掉为自定义右键菜单
        PopupMenu1.Popup(mPoint.X, mPoint.Y);
        Handled:=True;
      end;
    end;procedure TForm1.FormShow(Sender: TObject);
    begin
      Application.OnMessage := ApplicationEvents1Message;  //屏蔽Flash右键菜单,或弹出自定义右键菜单
    end;
      

  4.   

    放到PANLE里,然后把PANLE的右键菜单指向一个空的POPUPMENU。