要屏蔽掉右键菜单,只要实现IDocHostUIHandler.ShowContexMenu返回S_OK就可以了,你必须自己实现这个接口,另外你还必须使用ICustomDoc接口,用这个接口的SetUIHandler来设置Document的IDocHostUIHandler
这2个接口delphi自己没带,我翻译c++的如下
IDocHostUIHandler = interface(IUnknown)
['{bd3f23c0-d43e-11cf-893b-00aa00bdce1a}']
function ShowContextMenu(const dwID: DWORD;
const ppt: PPOINT;
const pcmdtReserved: IUnknown;
const pdispReserved: IDispatch): HRESULT;
stdcall;
function GetHostInfo(var pInfo: TDOCHOSTUIINFO): HRESULT;
stdcall;
function ShowUI(const dwID: DWORD;
const pActiveObject: IOleInPlaceActiveObject;
const pCommandTarget: IOleCommandTarget;
const pFrame: IOleInPlaceFrame;
const pDoc: IOleInPlaceUIWindow): HRESULT;
stdcall;
function HideUI: HRESULT;
stdcall;
function UpdateUI: HRESULT;
stdcall;
function EnableModeless(const fEnable: BOOL): HRESULT;
stdcall;
function OnDocWindowActivate(const fActivate: BOOL): HRESULT;
stdcall;
function OnFrameWindowActivate(const fActivate: BOOL): HRESULT;
stdcall;
function ResizeBorder(const prcBorder: PRECT;
const pUIWindow: IOleInPlaceUIWindow;
const fRameWindow: BOOL): HRESULT;
stdcall;
function TranslateAccelerator(const lpMsg: PMSG;
const pguidCmdGroup: PGUID;
const nCmdID: DWORD): HRESULT;
stdcall;
function GetOptionKeyPath(var pchKey: POLESTR;
const dw: DWORD): HRESULT;
stdcall;
function GetDropTarget(const pDropTarget: IDropTarget;
out ppDropTarget: IDropTarget): HRESULT;
stdcall;
function GetExternal(out ppDispatch: IDispatch): HRESULT;
stdcall;
function TranslateUrl(const dwTranslate: DWORD;
const pchURLIn: POLESTR;
var ppchURLOut: POLESTR): HRESULT;
stdcall;
function FilterDataObject(const pDO: IDataObject;
out ppDORet: IDataObject): HRESULT;
stdcall;
end;
ICustomDoc=interface(IUnknown)
['{3050f3f0-98b5-11cf-bb82-00aa00bdce0b}']
function SetUIHandler(const pUIHandler:IDocHostUIHandler):HRESULT;
stdcall;
end;
另外一个方法就是hook