在 Delphi 中禁用 TWebBrowser 上的键盘
Disable keyboard on TWebBrowser in Delphi
我想为 TWebBrowser
禁用键盘并避免使用 Ctrl+C 复制其中的信息。但我在 TWebBrowser
属性中找不到任何禁用键盘的选项。
有办法吗?
编辑:我看到了这个解决方案,但它不起作用。
Disable All Keypresses
您可以在应用程序级别执行此操作,防止将某些消息转发到 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
组件一起使用
@法布里齐奥
感谢您的代码。此代码无法为 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;
结束;
我想为 TWebBrowser
禁用键盘并避免使用 Ctrl+C 复制其中的信息。但我在 TWebBrowser
属性中找不到任何禁用键盘的选项。
有办法吗?
编辑:我看到了这个解决方案,但它不起作用。 Disable All Keypresses
您可以在应用程序级别执行此操作,防止将某些消息转发到 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
组件一起使用
@法布里齐奥
感谢您的代码。此代码无法为 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;
结束;