我用TwebBrowser调用网页,对输入框,回车换行不能用不知道什么原因

解决方案 »

  1.   

    Handled := False;
    if ((Msg.message >= WM_KEYFIRST) and (Msg.message <= WM_KEYLAST)) then
    begin
      if IsChild(WebBrowser.Handle, Msg.hWnd) then
      begin
        Handled := (WebBrowser.DefaultInterface as IOleInPlaceActiveObject).TranslateAccelerator(Msg) = S_OK;
        if not Handled then
        begin
          Handled := True;
          TranslateMessage(Msg);
          DispatchMessage(Msg);
          inherited;
        end;
      end;
    end;
      

  2.   

    在Application.OnMessage事件中将收到的按键消息传递给WebBrowser
      

  3.   

    在窗口中添加一个TAppEvents或者TApplicationEvents,OnMessage中写如下代码
    procedure TForm1.ApplicationEvents1Message(var Msg: tagMSG;
      var Handled: Boolean);
    { fixes the malfunction of some keys within webbrowser control }
    const
      StdKeys = [VK_TAB, VK_RETURN]; { standard keys }
      ExtKeys = [VK_DELETE, VK_BACK, VK_LEFT, VK_RIGHT]; { extended keys }
      fExtended = $01000000; { extended key flag }
    begin
      Handled := False;
      with Msg do
        if ((Message >= WM_KEYFIRST) and (Message <= WM_KEYLAST)) and
          ((wParam in StdKeys) or {$IFDEF VER120}(GetKeyState(VK_CONTROL) < 0) or {$ENDIF}
          (wParam in ExtKeys) and ((lParam and fExtended) = fExtended)) then
        try
          if IsChild(WebBrowser1.Handle, hWnd) then
          { handles all browser related messages }
          begin
            with WebBrowser1.Application as IOleInPlaceActiveObject do
              Handled := TranslateAccelerator(Msg) = S_OK;
            if not Handled then
            begin
              Handled := True;
              TranslateMessage(Msg);
              DispatchMessage(Msg);
            end;
          end;
        except end;
    end; // IEMessageHandler