본문 바로가기

전체 글

[Chromium] CEF4Delphi - Context Menu추가 구현하기 1. 개요 크롬 웹브라우저를 임베딩(Embedding) 시킨 상태에서 웹브라우저의 팝업메뉴(Context Menu)에 사용자 정의 메뉴 항목을 추가하고 구현해 보자. 2. Context 메뉴 ID 정의 unit uCEFConstants 에 기본정의된 사용자ID 상수로 부터 출발 하도록 하나. const MENU_ID_USER_FIRST = 26500; 사용자 정의 Context ID const MENU_ID_MYFIRST_CONTEXT = MENU_ID_USER_FIRST + 1; 3. Context Menu 항목 추가 TChromium.OnBeforeContextMenu 이벤트 핸들러에서 항목 추가 procedure TForm1.Chromium1BeforeContextMenu(Sender: TObjec.. 더보기
[Chromium] CEF4Delphi - 자바스크립트로 델파이 코드 실행 1. 개요 CEF는 델파이 Client Application에서 사용 가능한 JS Type, Array, Function, Extensions, Object 등등 JS의 특성을 제공 가장 큰 특징은 자바스크립트에서 델파이 코드를 실행시킬 수 있음 2. 처리 Process TChromium.ExecuteJavascript로 사용자 정의 JavaScript Code 실행 사용자 정의 JavaScript Code는 Chromium의 Renderer Process에서 실행 되고 사용자가 정의한 확장된 JavaScript를 호출하여 실행 시킨다. 이때 델파이 코드도 Renderer Process내에서 실행 사용자 정의 Javascript에 포함된 Delphi코드는 Browser Process에 처리 결과 등의 전.. 더보기
[Chromium] CEF4Delphi - 크롬브라우저 팝업메뉴 추가 및 실행 개요 크롬 웹브라우저에서 오늘쪽 마우스 버튼을 클릭하여 나오는 팝업메뉴에 사용자 메뉴를 추가하고 실행 시킬 수 있다. 방법 - TChromium.OnBeforeContextMenu 이벤트 핸들러 작성 - 파라미터 "model TCefMenuModel" 에 사용자 메뉴 항목 추가 const JSDEMO_CONTEXTMENU_EXECFUNCTION = MENU_ID_USER_FIRST + 1; EXECFUNCTION_MSGNAME = 'usermenu1'; ... procedure TForm1.Chromium1BeforeContextMenu( Sender: TObject; const browser: ICefBrowser; const frame: ICefFrame; const params: ICefContex.. 더보기
[Chromium] CEF4Delphi - Javascript 유효성 체크(Evaluate Javascript) 크롬을 이용한 Javascript 유효성 체크(Evaluate Javascript) 웹페이지에 실행시킬 자바스크립트의 유효성을 검토하기 위해서는 다음 단계를 따른다. 1. 렌더링 프로세스 핸들러중 OnProcessMessageReceived 이벤트 핸들러를 작성하여 GlobalCEFApp.OnProcessMessageReceived에 할당한다. const EVAL_JS = 'JSContextEvalDemo'; BINARY_PARAM_JS = 'JSBinaryParameter'; ... //일반적인 경우 procedure ParseEvalJsAnswer(const pMessage : ICefProcessMessage; const pBrowser : ICefBrowser; const pFrame : ICef.. 더보기
[Chromium] CEF4Delphi - 웹페이지 Javascript Alert / Dialog 창 DETECT 및 재처리 [Chromium] CEF4Delphi - 웹페이지 Javascript Alert / Dialog 창 DETECT 및 재처리 웹페이지에서 발생되는 자바스크립트에 의한 웹페이지 메시지(Alert 창) 또는 다이얼로그(Dialog)창의 발생 시점을 인지(Detect)하고, 재처리 할수 있는 기능에 대한 탐구 관련 이벤트 설정 //OnJsDialog 이벤트 핸들러를 작성하여 Alert/Dialog창이 뜨는 것을 Detect Chromium1.OnJsdialog := UserJsOnDalog; 가공 되지 않은 기본 메시지창 / 재처리된 메시지창 사례 기본 메시지창 재처리된 메시지창 사용자 이벤트 핸들러 작성(UserOnJsDialog) const CEFBROWSER_SHOWJSDIALOG = WM_APP + $.. 더보기
[Chromium] CEF4Delphi - 자바스크립트 실행 / 웹페이지 편집 모드 TChromium 컴포넌트의 ExecuteJavaScript 함수를 이용하면 웹브라우저내 웹페이지에 사용자 자바 스크립트를 실행 시킬 수 있다. //현재 네비게이션된 웹페이지를 편집 가능한 상태로 만든다 TempCode := 'document.designMode = "on";'; Chromium1.ExecuteJavaScript(TempCode, 'about:blank'); 웹페이지 편집 웹페이지를 편집하기 위해서는 먼저 자바스크립트로 'document.designMode="on";' 을 실행 시켜 주어야 가능함.(위 코드블럭 확인) 웹페이지 편집 기능 사례 //선택된 영역에 대한 컬러 변경 TempHexColor := '#' + IntToHex(GetRValue(clRed), 2) + IntToHex(.. 더보기
[Chromium] CEF4Delphi - 크롬웹브라우저에 키보드/마우스 이벤트 전달하기 크롬웹브라우저에 키보드/마우스 이벤트 전달하기 Chromium 웹브라우저를 임베딩 시키면 일반적인 네비게이션 및 마우스 클릭 등의 동작을 이용한 추가 네비게이션 등은 동작을 하지만 키보드 입력 및 마우스 휠 동작은 웹브라우저에 전달되지 않는다. 임베딩된 웹브라우저에 사용자 키보드 입력값 및 마우스 휠 이벤트 정보를 전달하는 방법을 살펴 보자 1. 먼저 VCL Form(TForm) 에 TApplicationEvents 컴포넌트를 올려놓는다. 2. TApplicationEvents.OnMessage 이벤트 핸들러를 작성하여 키보드 및 마우스 휠 이벤트를 웹브라우저에 전달 한다. uses uCEFChromium, uCEFTypes, ... procedure TForm1.AppEventsMessage(var M.. 더보기
[Chromium] CEF4Delphi - 웹브라우저 컨테이너 폼 Closing Process Chromium 웹브라우저를 임베딩한 VCL Form의 Closeing 절차 개요 TChromium 또는 TCEFWindowParent가 올려진 TForm에 대해 다음 절차로 Closeing 처리를 해 주어야 함 처리방법 폼에 전역변수 선언 FCanClose : boolean; // TChromium.OnBeforeClosed 에서 TRUE로 세팅 FClosing : boolean; // TForm.OnClose에서 TRUE로 세팅 1. TForm.OnCloseQuery 이벤트 핸들러에서 폼이 Closing되기 전에 Chromium.CloseBrowser(true)를 호출하고 CanClose=false로 처리하여 TChromium이 해제되기 전에 폼이 해제 되는 것을 방지 procedure TForm1... 더보기