WebBrowser 컨트롤을 사용하면 ObjectForScripting 및 Document 속성을 통해 클라이언트 응용프로그램 코드와
웹페이지 스크립팅 코드 간의 양뱡향 통신을 구현할 수 있다.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Security.Permissions;
namespace WindowsFormsApplication8
{
[PermissionSet(SecurityAction.Demand, Name="FullTrust")]
[System.Runtime.InteropServices.ComVisible(true)]
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
webBrowser1.AllowWebBrowserDrop = false; // webbrowser 컨트롤에 끌어 놓은 파일이 열리지 않도록 한다.
webBrowser1.IsWebBrowserContextMenuEnabled = false; // webbrowser 컨트롤을 마우스 오른쪽 단추로 클릭할 때 바로가기 메뉴가 표시되지 않도록 한다.
webBrowser1.WebBrowserShortcutsEnabled = false; // webbrowser 컨트롤이 바로 가기에 응답하지 않도록 한다.
webBrowser1.ObjectForScripting = this; // 스크립팅 개체에 대한 폼 클래스 자체를 사용한다.
// COM(Component Object Model)은 스크립팅 개체에 액세스 할 수 있어야 한다.
// COM 에서 폼을 볼 수 있도록 하려면 ComVisible 속성을 추가한다.
//webBrowser1.ScriptErrorsSuppressed = true; // webbrowser 컨트롤에서 스크립트 코드 문제에 대한 오류 메시지를 표시하지 않도록 한다.
webBrowser1.DocumentText = "<html><head><script>function test(message) {alert(message + '-html');} " +
" </script></head><body><br> Windows Forms Code From Html Script Code <br><br> <button " +
" onclick=\"window.external.Test('call windows forms code from script code')\">" +
" call windows form client code from script code(HTML)</button>" +
" </body></html>";
}
public void Test(String message)
{
MessageBox.Show(message, "client code(C#)");
}
private void button1_Click(object sender, EventArgs e)
{
webBrowser1.Document.InvokeScript("test", new string[] {"called html script code from window forms code(C#) "});
}
}
}
[그림1] – Windows Forms 코드에서 스크립트 코드의 메소드 호출
[그림2] – 스크립트 코드에서 Windows Forms 코드의 메소드 호출
[단일 프로세스 실행] (0) | 2010.12.31 |
---|---|
[Windows Forms 창 흔들기 효과] (0) | 2010.12.31 |
TextBox 스크롤 하단으로 내리기 (0) | 2010.12.20 |
컨트롤의 속성 그룹화 하기 (0) | 2010.12.20 |
밀리세컨 시간동안 대기 (0) | 2010.12.17 |