Начну с того, что всякий вставленный в Дельфовую форму ActiveX все равно является объектом класса TControl - значит, есть у него и свойство WindowProc, которое мы можем смело перекрыть... Вся фишка в том, что мы смотрим - если к нам пришло MW_RBUTTONDOWN, мы его обслуживаем самостоятельно и дальше не отдаем. А вот если что другое - всегда пожалуйста, вызываем старый обработчик... В приведенном ниже примере SF - это вставленный в дельфовую форму ActivX с мувиком. При нажатии на правую кнопку жалобно пищит, в остальном функционирует нормально... Пример представлен только для демонстрации идеи...

Код:
unit mftestfm;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
OleCtrls, ShockwaveFlashObjects_TLB;
type
TForm1 = class(TForm)
sf: TShockwaveFlash;
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
OldProc:TWndMethod;
procedure newProc(var Message: TMessage);
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.FormCreate(Sender: TObject);
begin
OldProc :=sf.WindowProc;
sf.WindowProc:=newProc;
end;
procedure TForm1.newProc(var Message: TMessage);
begin
if Message.Msg <> WM_RBUTTONDOWN then
OldProc(Message)
else
MessageBeep(0);
end;
end.