개요
크롬 웹브라우저에서 오늘쪽 마우스 버튼을 클릭하여 나오는 팝업메뉴에 사용자 메뉴를 추가하고 실행 시킬 수 있다.
방법
- 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: ICefContextMenuParams; const model: ICefMenuModel); begin model.AddSeparator; model.AddItem(JSDEMO_CONTEXTMENU_EXECFUNCTION, '사용자 정의 메뉴'); end;
- TChromium.OnContextMenuCommand 이벤트 핸들러 에서 CommandID에 해당 메뉴에 대한 실행 코드 작성
procedure TForm1.Chromium1ContextMenuCommand( Sender: TObject; const browser: ICefBrowser; const frame: ICefFrame; const params: ICefContextMenuParams; commandId: Integer; eventFlags: Cardinal; out Result: Boolean); var TempMsg : ICefProcessMessage; begin Result := False; case commandId of JSDEMO_CONTEXTMENU_EXECFUNCTION : begin //실행 코드를 메시지 핸들러를 이용해 모듈화 시킴 //이부분에서 작성된 사용자 Delphi코드는 프로그램에서 실행 된다. ShowMessage('실행코드2'); //이 코드는 실행됨. TempMsg := TCefProcessMessageRef.New(EXECFUNCTION_MSGNAME); Chromium1.SendProcessMessage(PID_RENDERER, TempMsg); end; end; end; // Chromium1.SendProcessMessage로 보내진 메시지는 "GlobalCEFApp : TCefApplication" 크롬AppApplication의 "OnProcessMessageReceived" 이벤트 핸들러가 받아서 처리한다. procedure GlobalCEFApp_OnProcessMessageReceived(const browser : ICefBrowser; const frame : ICefFrame; sourceProcess : TCefProcessId; const aMessage : ICefProcessMessage; var aHandled : boolean); var arguments: TCefv8ValueArray; begin if (aMessage.name = EXECFUNCTION_MSGNAME) then begin //이 위치는 GlobalCEFApp 영역이기 때문에 ShowMessage('사용자메뉴 실행2'); //--이 위치에서는 UI 명령은 실행이 안된다. TRACE('사용자메뉴 실행2'); //none ui 코드는 실행 된다. if (GlobalCallbackFunc <> nil) then GlobalCallbackFunc.ExecuteFunctionWithContext(GlobalCallbackContext, nil, arguments); aHandled := True; end else aHandled := False; end; ... //GlobalCEFApp 이벤트 핸들러에 등록 GlobalCEFApp.OnProcessMessageReceived := GlobalCEFApp_OnProcessMessageReceived;
'프로그래밍 > Chromium(CEF4Delphi)' 카테고리의 다른 글
[Chromium] CEF4Delphi - Context Menu추가 구현하기 (0) | 2019.10.29 |
---|---|
[Chromium] CEF4Delphi - 자바스크립트로 델파이 코드 실행 (0) | 2019.09.30 |
[Chromium] CEF4Delphi - Javascript 유효성 체크(Evaluate Javascript) (0) | 2019.09.19 |
[Chromium] CEF4Delphi - 웹페이지 Javascript Alert / Dialog 창 DETECT 및 재처리 (0) | 2019.09.18 |
[Chromium] CEF4Delphi - 자바스크립트 실행 / 웹페이지 편집 모드 (0) | 2019.09.18 |