我想为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;
结束;