我想要禁用鍵盤TWebBrowser并避免使用Ctrl C. TWebBrowser但我在屬性中找不到任何禁用鍵盤的選項。
有沒有辦法做到這一點?
編輯:我看到了這個解決方案,但它不起作用。 禁用所有按鍵
uj5u.com熱心網友回復:
您可以在應用程式級別執行此操作,防止將某些訊息轉發到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組件一起使用
uj5u.com熱心網友回復:
@法布里齊奧
謝謝你的代碼。此代碼無法禁用 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;
結尾;
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/484639.html
