在Delphi中禁用TWebBrowser的键盘



我想为TWebBrowser禁用键盘,并避免使用Ctrl+C复制其中的信息。但是我在TWebBrowser属性中找不到任何禁用键盘的选项。

有办法做到这一点吗?

编辑:我看到了这个解决方案,但它不起作用。禁用所有按键

您可以在应用程序级别这样做,防止一些消息被转发到TWebBrowser组件。例如,通过使用TApplicationEvents组件及其OnMessage事件处理程序:

procedure TForm1.ApplicationEvents1Message(var Msg: tagMSG;
var Handled: Boolean);
begin
if (
//keyboard
(Msg.message = WM_KEYDOWN)
//right click, for avoid copy-paste from popupmenu
(Msg.Message = WM_RBUTTONDOWN) or
(Msg.Message = WM_RBUTTONDBLCLK) or
) then
begin
if IsChild(WebBrowser1.Handle, Msg.hwnd) then
begin
Handled := True;
end;
end;
end;

一个更干净的解决方案可能是在组件级别抑制此类消息,但不幸的是,我从来没有找到一种方法可以使TWebBrowser组件

@Fabrizio

感谢您的代码。这个代码不能禁用键盘为TWebBrowser。对于这个问题,我找到了一个名为EmbeddedWB的组件。有禁用上下文菜单的选项。

现在复合选项与您的代码(稍作更改)使文本复制完全禁用。

procedure TMainForm.ApplicationEventsMessage(var Msg: tagMSG;
var Handled: Boolean);
begin
if ((Msg.message=WM_RBUTTONDOWN) or (Msg.message=WM_RBUTTONUP) or 
(Msg.message=WM_KEYDOWN) or (Msg.message=WM_KEYUP)) and 
IsChild(WebBrowser.Handle,Msg.hwnd) then
begin
PopupMenu.Popup(Msg.pt.X,Msg.pt.Y);
Handled:=true;
end;

结束;

最新更新