哪位高手知道,如何屏蔽WebBrowser上的Ctrl键和鼠标右键?请赐教

解决方案 »

  1.   

    不用吧,在属性设置中,看一下,   registerasbrowse 设置为true
      

  2.   

    var
      HookID: THandle;function MouseProc(nCode: Integer; wParam, lParam: Longint): Longint; stdcall;
    var
      szClassName: array[0..255] of Char;
    const
      ie_name = 'Internet Explorer_Server';
    begin
      case nCode < 0 of
        True:
          Result := CallNextHookEx(HookID, nCode, wParam, lParam)
          else
            case wParam of
              WM_RBUTTONDOWN,
              WM_RBUTTONUP:
                begin
                  GetClassName(PMOUSEHOOKSTRUCT(lParam)^.HWND, szClassName, SizeOf(szClassName));
                  if lstrcmp(@szClassName[0], @ie_name[1]) = 0 then
                    Result := HC_SKIP
                  else
                    Result := CallNextHookEx(HookID, nCode, wParam, lParam);
                end
                else
                  Result := CallNextHookEx(HookID, nCode, wParam, lParam);
            end;
      end;
    end;procedure TForm1.FormCreate(Sender: TObject);
    begin
      HookID := SetWindowsHookEx(WH_MOUSE, MouseProc, 0, GetCurrentThreadId());
    end;procedure TForm1.FormDestroy(Sender: TObject);
    begin
      if HookID <> 0 then
        UnHookWindowsHookEx(HookID);
    end;procedure TForm1.Button1Click(Sender: TObject);
    begin
      Webbrowser1.Navigate('http://www.google.com');
    end;
      

  3.   

    To yq3woaini(哈哈镜(中级代码工):你说的方法不行
      

  4.   

    1.网页check.htm:
    <%if Session("Ulogin")<>"yes" then%>
    <script>
      window.top.location.href="../../login.htm"
    </script>
    <%end if%><script language="JavaScript">
    <!--//if (window.Event) 
    //document.captureEvents(Event.MOUSEUP); function nocontextmenu() 
    {
    event.cancelBubble = true
    event.returnValue = false;return false;
    }function norightclick(e) 
    {
    if (window.Event) 
    {
    if (e.which == 2 || e.which == 3)
    return false;
    }
    else
    if (event.button == 2 || event.button == 3)
    {
    event.cancelBubble = true
    event.returnValue = false;
    return false;
    }}document.oncontextmenu = nocontextmenu; // for IE5+
    document.onmousedown = norightclick; // for all others
    //-->
    </script>
    2.在其它网页的页头引用,如下:
    <!--#include file="check.htm" -->
      

  5.   

    To pengxuan(网虫先生) : 你的代码好像编译不通过的吧?劳烦你提供完整的代码行吗?先谢谢啦
      

  6.   

    To hqhhh(枫叶) : 你说的方法是对网页先做编辑处理,而不是纯粹在Delphi里实现了;另外,你的方法处理了之后,打开网页好像是屏蔽了右键等,但是在WebBrowser中显示的时候还是可以使用右键和Ctrl键的
      

  7.   

    这是全部代码
    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, OleCtrls, SHDocVw_TLB, EmbeddedWB, StdCtrls;type
      TForm1 = class(TForm)
        btn1: TButton;
        EmbeddedWB1: TEmbeddedWB;
        procedure FormCreate(Sender: TObject);
        procedure FormDestroy(Sender: TObject);
        procedure btn1Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;
      HookID: THandle;
    implementation{$R *.dfm}function MouseProc(nCode: Integer; wParam, lParam: Longint): Longint; stdcall;
    var
      szClassName: array[0..255] of Char;
    const
      ie_name = 'Internet Explorer_Server';
    begin
      case nCode < 0 of
        True:
          Result := CallNextHookEx(HookID, nCode, wParam, lParam)
          else
            case wParam of
              WM_RBUTTONDOWN,
              WM_RBUTTONUP:
                begin
                  GetClassName(PMOUSEHOOKSTRUCT(lParam)^.HWND, szClassName, SizeOf(szClassName));
                  if lstrcmp(@szClassName[0], @ie_name[1]) = 0 then
                    Result := HC_SKIP
                  else
                    Result := CallNextHookEx(HookID, nCode, wParam, lParam);
                end
                else
                  Result := CallNextHookEx(HookID, nCode, wParam, lParam);
            end;
      end;
    end;
    procedure TForm1.FormCreate(Sender: TObject);
    begin
      HookID := SetWindowsHookEx(WH_MOUSE, MouseProc, 0, GetCurrentThreadId());
    end;procedure TForm1.FormDestroy(Sender: TObject);
    begin
      if HookID <> 0 then
        UnHookWindowsHookEx(HookID);
    end;procedure TForm1.btn1Click(Sender: TObject);
    begin
      Webbrowser1.Navigate('http://www.google.com');
    end;end.
      

  8.   

    你可以下载这个扩展webbrwoser控件:
    http://www.euromind.com/iedelphi/download/embedwb116b.zip
    这个控件可以实现你的要求,控件相关地址:
    http://www.euromind.com/iedelphi/embeddedwb.htm
      

  9.   

    To pengxuan(网虫先生):你提供的方法确实可以屏蔽右键,我想问问还能屏蔽Ctrl键吗?或者说不允许复制,若能实现的话,我就结贴了。
      

  10.   

    还有哪位高手知道如何不让用户在WebBrowser上复制东西拷贝到其他地方?