TWebBrowser 이용시 특수키입력

From YYpBD's MediaWiki

Jump to: navigation, search

웹브라우져 컨트롤을 이용할때, enter key와 ctrl+c/x 동작 하도록 하기  
IOleInPlaceActiveObject로 검색을 해보니 비슷한 문서들이 많이 있긴 하던데,
대부분 enter key에 대한 언급 뿐이더군요.
그래서 ctrl+c/ctrl+x에 대해서도 처리하도록 조금 수정 해 봤습니다.
참고하세요..

---------------------------------------------------------
uses
ActiveX, ClipBrd;

var
Form1: TForm1;
FOleInPlaceActiveObject: IOleInPlaceActiveObject;
SaveMessageHandler: TMessageEvent;

procedure TForm1.FormActivate(Sender: TObject);
begin
SaveMessageHandler := Application.OnMessage;
Application.OnMessage := MyMessageHandler;
end;

procedure TForm1.FormDeactivate(Sender: TObject);
begin
Application.OnMessage := SaveMessageHandler;
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Application.OnMessage := SaveMessageHandler;
FOleInPlaceActiveObject := nil;
end;

procedure TForm1.MyMessageHandler(var Msg: TMsg; var Handled: Boolean);
const
DialogKeys: set of Byte = [VK_LEFT, VK_RIGHT, VK_BACK, VK_UP, VK_DOWN,
   $30..$39, $41..$42, $44..$55, $57, $59..$5A];
begin
{ exit if we don't get back a webbrowser object }
if WebBrowser1 = nil then
begin
   Handled := False;
   Exit;
end;

if (Msg.hwnd = WebBrowser1.Handle) or (IsChild(WebBrowser1.Handle, Msg.hwnd)) then
begin
   if ((Msg.message = WM_KEYDOWN) or (Msg.message = WM_KEYUP)) and (GetKeyState(VK_CONTROL) < 0) then
   begin
     Handled := (WebBrowser1.Application as IOleInPlaceActiveObject).TranslateAccelerator(Msg)=S_OK;
     if (Msg.wParam = 67) then
     Clipboard.AsText := WebBrowser1.OleObject.Document.selection.createRange().text;
     if (Msg.wParam = 88) then
       WebBrowser1.OleObject.Document.selection.createRange().text := '';
     WebBrowser1.OleObject.Document.selection.createRange().select();
   end
   else
   begin
     Handled := not word(Msg.wParam) in [byte('A')..byte('Z'),VK_RETURN];
     if Handled or (Msg.wParam = VK_RETURN) then
       Handled := (WebBrowser1.Application as IOleInPlaceActiveObject).TranslateAccelerator(Msg)=S_OK;
   end
end;

end;  

맞춤검색