在WebBrowser控件上禁用Ctrl + P(打印)

Ker*_*mia 1 browser printing delphi

我在我的delphi应用程序中使用webbrowser.如何禁用Ctrl + P以防止打印?

Mah*_*d_N 5

看下面的代码:

var
 mClass : Array[0..1024] of Char;
begin
 if (GetClassName(Msg.hwnd, mClass, 1024) > 0) then
  begin
   if (StrIComp(@mClass, 'Internet Explorer_Server') = 0) then
    begin
     if Msg.message = WM_KEYDOWN then
      Handled := (Msg.wParam = Ord('P')) and (GetKeyState(VK_CONTROL) <> 0);
    end
  end;
end;
Run Code Online (Sandbox Code Playgroud)

为了防止发送到TWebBrowser控件的消息,我们可以获取消息接收器的类名,然后将类名与"Internet Explorer_Server"(IE Server Calss Name)进行比较,如果class-names相等则可以确保消息发送到WebBrowser控件,现在你可以处理消息到达...在上面的代码我们这样做来处理Ctrl + P快捷方式,但你可以使用这个想法更像是禁用上下文菜单或...注意当一个页面加载到WebBrowser中,消息将发布到IE Server而不是TWebBrowser Handle ...

首先在表单上放置TApplicationEvents,然后从此处复制/粘贴代码到它的OnMessage事件......

祝好运 ...