我试图在 Chromium Embedded (DCEF3) 窗口中禁用鼠标右键(上下文菜单),但我没有得到,我没有找到任何设置来本地执行此操作。
例如,我可以禁用“查看源代码”,我正在使用下面的代码,但我真正想要的是禁用上下文菜单,或者不希望它出现。
注意:我在 DLL“Chromium.dll”中使用此库,该库与“Inno Setup”一起使用,相当于在 Web 浏览器中。
procedure TInnoChromium.OnContextMenuCommand(Sender: TObject;
const browser: ICefBrowser; const frame: ICefFrame;
const params: ICefContextMenuParams; commandId: Integer;
eventFlags: TCefEventFlags; out Result: Boolean);
begin
if (commandId = 132) then Result := True; // MENU_ID_VIEW_SOURCE
end;
要禁用 DCEF 3 中的上下文菜单,您需要处理OnBeforeContextMenu http://magpcss.org/ceforum/apidocs3/projects/%28default%29/CefContextMenuHandler.html#OnBeforeContextMenu事件并清除其model
范围。这就是参考文献所说的(我强调的):
在上下文菜单之前
在显示上下文菜单之前调用。 |参数|提供
有关上下文菜单状态的信息。 |型号|最初包含
默认上下文菜单。|模型|可以清除以显示没有
上下文菜单或修改为显示自定义菜单。不要保留
对 |params| 的引用或|型号|在此回调之外。
因此,要完全禁用上下文菜单,您将编写如下内容:
uses
cefvcl, ceflib;
type
TInnoChromium = class
...
private
FChromium: TChromium;
procedure BeforeContextMenu(Sender: TObject; const browser: ICefBrowser;
const frame: ICefFrame;
public
constructor Create;
end;
implementation
constructor TInnoChromium.Create;
begin
FChromium := TChromium.Create(nil);
...
FChromium.OnBeforeContextMenu := BeforeContextMenu;
end;
procedure TInnoChromium.BeforeContextMenu(Sender: TObject; const browser: ICefBrowser;
const frame: ICefFrame; const params: ICefContextMenuParams; const model: ICefMenuModel);
begin
// to disable the context menu clear the model parameter
model.Clear;
end;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)