Delphi Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
델파이 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
FreePascal/Lazarus
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
델마당
볼랜드포럼 광고 모집

델파이 Q&A
Delphi Programming Q&A
[15155] [질문]WebBrowser에 엔터키가 안먹힙니다.
쿠핑 [couping] 2661 읽음    2014-05-11 11:53
안녕하세요

오늘은 날씨도 좋은데 이놈의 엔터땜에 집구석에 있습니다.....ㅜ.ㅜ

unit Web;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.OleCtrls, SHDocVw, OLE2, ActiveX;

type
  TfrmWeb = class(TForm)
    WebBrowser1: TWebBrowser;
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure WebBrowser1NavigateComplete2(ASender: TObject;
      const pDisp: IDispatch; const URL: OleVariant);
    procedure FormDestroy(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure FormKeyPress(Sender: TObject; var Key: Char);
  private
    { Private declarations }
  public
    { Public declarations }
    FOleInPlaceActiveObject: IOleInPlaceActiveObject;
    procedure MsgHandler(var Msg: TMsg; var Handled: Boolean);
  end;

var
  frmWeb: TfrmWeb;

implementation


{$R *.dfm}

procedure TfrmWeb.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  //Action := caFree;
end;

procedure TfrmWeb.FormCreate(Sender: TObject);
begin
  Application.OnMessage := MsgHandler;
end;

procedure TfrmWeb.FormDestroy(Sender: TObject);
begin
  FOleInPlaceActiveObject := nil;
end;

procedure TfrmWeb.FormKeyPress(Sender: TObject; var Key: Char);
begin
  //Don't forget ot set the Keypreview property
  //of the form to true!
  if (Key=#13) then begin
    Key := #0;
    Keybd_Event(VK_LCONTROL, 0, 0, 0); //Ctrl key down
    Keybd_Event(Ord('M'), MapVirtualKey(Ord('M'), 0),  0, 0); // 'M' key down
    Keybd_Event(Ord('M'), MapVirtualKey(Ord('M'), 0), KEYEVENTF_KEYUP, 0); // 'M' Key up
    Keybd_Event(VK_LCONTROL, 0, KEYEVENTF_KEYUP,  0); // Ctrl key up
    Keybd_Event(VK_CANCEL, 0, 0, 0);
  end;
end;

procedure TfrmWeb.MsgHandler(var Msg: TMsg; var Handled: Boolean);
const
  StdKeys = [VK_BACK, VK_UP, VK_DOWN, VK_LEFT, VK_RIGHT];
var IOIPAO: IOleInPlaceActiveObject;
  Dispatch: IDispatch;
begin
  if WebBrowser1 = nil then
  begin
    Handled := False;
    Exit;
  end;
  Handled := (IsDialogMessage(WebBrowser1.Handle, Msg) = True);
  if (Handled) and (not WebBrowser1.Busy) then
  begin
    if FOleInPlaceActiveObject = nil then
    begin
      Dispatch := IDispatch(WebBrowser1.Application);
      if Dispatch <> nil then
      begin
        Dispatch.QueryInterface(IID_IOleInPlaceActiveObject, IOIPAO);
        if IOIPAO <> nil then FOleInPlaceActiveObject := IOIPAO;
      end;
    end;
    if FOleInPlaceActiveObject <> nil then
      if ((Msg.message = WM_KEYDOWN) or (Msg.message = WM_KEYUP)) and
        (Msg.wParam in StdKeys) then
        //nothing  -  do not pass on Backspace, Left, Right, Up, Down arrows
      else FOleInPlaceActiveObject.TranslateAccelerator(Msg);
  end;

end;

procedure TfrmWeb.WebBrowser1NavigateComplete2(ASender: TObject;
  const pDisp: IDispatch; const URL: OleVariant);
begin
//
end;


initialization
  OleInitialize(nil);

finalization
  OleUninitialize;

end.


이렇게 해서 브라우저 부분을 처리 했는데 textarea 부분에서 엔터키가 안먹힙니다.

WebBrowser1.Navigate('http://testgyro.com/t/1.html');

여기에 아무것도 없는 textarea만 있는데 안되네여

저는 XE2로 작업하였습니다.

부디 회신 부탁드립니다.


+ -

관련 글 리스트
15155 [질문]WebBrowser에 엔터키가 안먹힙니다. 쿠핑 2661 2014/05/11
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.