trying TWebBrowser Customizing Part II - Control DockHost by Script
IE의 JavaScript에서 window.external이라는 객체로 DocHost Application을 접근할 수 있는 기능을 제공한다. 이를 위해서는 DocHost는 IDocHostUIHandler 인터페이스를 구현하고 그 안의 GetExternal에서 javascript의 External에 해당하는 IDispatch 인터페이스를 넘겨주면 된다.

넘겨주는 IDispatch는 Automation 객체여야하기 때문에 Type library를 만들어야하는 것을 잊지말것.. 어짜피 실행하면 타입라이브러리 찾을 수 없다고 에러가 나오기는 하지만 말이야..

그렇다면 대략 TWebBrowser 컴포넌트로 불러올 HTML 코드는 다음과 같다..

... bla bla...
<a href="javascript:window.external.HelloWorld()">Hello World</a>

... bla bla...

그리고 GetExternal 을 구현하는 함수에서는 대략 이렇게 된다.

 ppDispatch := TExternal.Create;

.. 그리고 타입라이브러리의 External 인터페이스에 HelloWorld 함수를 만들고 다음과 같이 하면 링크를 클릭하면 메시지 박스를 띄울것이다.

TExternal.HelloWorld()
begin
  Application.MessageBox(
    '이건 JavaScript의 alert()를 이용한게 아닙니다. ' + #13#10 +
    'External에서 보내는 메시지입니다', '메시지 상자', MB_ICONINFORMATION);
end;

다음은 실제 예제임..~~ helloexternal.exe

참고 자료들..
by Kidd™ | 2007/07/13 02:53 | /Delphi | 트랙백 | 덧글(2)
트랙백 주소 : http://whitekid.egloos.com/tb/1601584
☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]
Commented at 2008/03/27 01:11
비공개 덧글입니다.
Commented by Kidd™ at 2008/03/27 13:24
찾아보니 소스를 날려버렸군요. ㅡㅜ; 대신 이 프로그램 작성할때 참고했던 URL을 알려드리지요..

http://www.stevetrefethen.com/blog/CallingWindowsClientCodeFromJavascriptHostedInsideTheWebBrowserControl.aspx

:         :

:

비공개 덧글

< 이전페이지 다음페이지 >