在用WEBBROWSER开发浏览器时,当鼠标移动WEBBROWSER上面,按CTRL+N,将新打开一个IE,不知道这个问题各位高手是如何解决的,还解指点。如何才能将这个快捷键关闭。

解决方案 »

  1.   

    禁止键盘的一些组合键和鼠标右键
    Form onCreate 事件加入
       Application.OnMessage := ProcessMsg;{********禁止键盘的一些组合键和鼠标右键函数*****************}
    procedure TFrmMain.ProcessMsg(var Msg: TMsg; var Handled: Boolean);
    begin
      with Msg do
      begin
        if Message=WM_KEYDOWN then
        begin
          if Msg.wParam=17 then
            FirstIsCtrl:=True;
          if (Msg.wParam>=113) and(Msg.wParam<=123) then //禁止Fx键
             Handled:=True;
          if Msg.wParam=112 then // F1启动帮助
            BtnHelp.Click;
        end;
        if Message=WM_KEYUP then
          if Msg.wParam=17 then
            FirstIsCtrl:=False;
        if ((message = WM_RBUTTONDOWN) or
           (message = WM_RBUTTONDBLCLK)) or
           (message = WM_CONTEXTMENU) then
        begin
          Handled := True;
        end;
        if FirstIsCtrl then
        begin
          if Message=WM_KEYDOWN then
            if (Msg.wParam<>86) then
            if (Msg.wParam>=65) and (Msg.wParam<=90) then
              Handled:=True;
        end;
      end;
    end;
      

  2.   

    if Message=WM_KEYDOWN then这句出错了。什么没有定议。
      

  3.   

    if (Msg.message = WM_KEYDOWN) then
      

  4.   

    那段代码在什么情况下测试的啊。能不能全部代码都贴上来,或者 msn:[email protected]在线指导一下。
      

  5.   

    http://www.euromind.com/iedelphi/embeddedwb/onnewwindow.htm
      

  6.   


    其实我是有一个菜单也是ctrl+n的组合键,单焦点不在WEBBROWSER上面的时候,控CTRL+N就是新建一个窗口,焦点在WEBBROWSER上面时,控ctrl+n就成了打开一个IE了。晕啊。==================我想,不管焦点在那,只要控ctrl+n就是新建一个窗口,而不是去响应WEBBROWSER里的CTRL+N=================根本不响应主程序的CTRL+N腾讯我试了一下,就不会。好好的。
      

  7.   

    可以用键盘钩子钩住(废话)
    可以实现IDocHostUIHandler::TranslateAccelerator来处理
      

  8.   

    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, Menus, StdCtrls, OleCtrls, SHDocVw;type
      TForm1 = class(TForm)
        MainMenu1: TMainMenu;
        test1: TMenuItem;
        test11: TMenuItem;
        Edit1: TEdit;
        WebBrowser1: TWebBrowser;
        clear1: TMenuItem;
        procedure test11Click(Sender: TObject);
        procedure clear1Click(Sender: TObject);
        procedure FormCreate(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.dfm}procedure TForm1.test11Click(Sender: TObject);
    begin
        edit1.Text:='ctrl+n'
    end;procedure TForm1.clear1Click(Sender: TObject);
    begin
         edit1.Text:='clear'
    end;procedure TForm1.FormCreate(Sender: TObject);
    begin
      webbrowser1.Navigate('www.google.com');end;end.源码都在这了。菜单里有一项设了ctrl+n的快捷,单webbroser1获得焦点时,这个快捷就用不了。气死我了。=================所以这个快捷要是能响应主菜单的就好了。省了关闭它。
      

  9.   

    刚刚又测了一下。就是webbrowser的ctrl+n键优于菜单的ctrl+n快捷。
    ========返过来就好了。
      

  10.   

    jiangsheng(蒋晟.MSMVP2004Jan) 已经给出正确答案了,自己不去看,还到处找什么?
      

  11.   

    sspeak() ( )我的是ctrl+n的问题。
      

  12.   

    不是快捷键的问题,是newwindow的问题!
      

  13.   

    procedure TForm1.FormCreate(Sender: TObject);
    begin
    Application.OnMessage := ProcessMsg;
    end;
    procedure TForm1.ProcessMsg(var Msg: TMsg; var Handled: Boolean);
    begin
    if (msg.Message=WM_KEYdown) and  (msg.wParam =78) and ((GetKeyState(VK_CONTROL) and $8000) <> 0) then
    begin
      showmessage('ctrl+N');
       handled:=true;
       exit;
    end;
    end;