첨부 소스 코드는 나눔고딕코딩 폰트를 사용합니다.
728x90
반응형
728x170

TestProject.zip
다운로드

▶ MainForm.cs

using Microsoft.Win32;
using System;
using System.Text;
using System.Web;
using System.Windows.Forms;

namespace TestProject
{
    /// <summary>
    /// 메인 폼
    /// </summary>
    public partial class MainForm : Form
    {
        //////////////////////////////////////////////////////////////////////////////////////////////////// Constructor
        ////////////////////////////////////////////////////////////////////////////////////////// Public

        #region 생성자 - MainForm()

        /// <summary>
        /// 생성자
        /// </summary>
        public MainForm()
        {
            InitializeComponent();

            #region 이벤트를 설정한다.

            Load                  += Form_Load;
            this.showButton.Click += showButton_Click;

            #endregion
        }

        #endregion

        //////////////////////////////////////////////////////////////////////////////////////////////////// Method
        ////////////////////////////////////////////////////////////////////////////////////////// Private
        //////////////////////////////////////////////////////////////////////////////// Event

        #region 폼 로드시 처리하기 - Form_Load(sender, e)

        /// <summary>
        /// 폼 로드시 처리하기
        /// </summary>
        /// <param name="sender">이벤트 발생자</param>
        /// <param name="e">이벤트 인자</param>
        private void Form_Load(object sender, EventArgs e)
        {
            SetWebBrowserVersion(11001);

            this.mapTypeComboBox.SelectedIndex = 0;
        }

        #endregion
        #region 표시하기 버튼 클릭시 처리하기 - showButton_Click(sender, e)

        /// <summary>
        /// 표시하기 버튼 클릭시 처리하기
        /// </summary>
        /// <param name="sender">이벤트 발생자</param>
        /// <param name="e">이벤트 인자</param>
        private void showButton_Click(object sender, EventArgs e)
        {
            string url = GetGoogleMapURL(this.addressTextBox.Text, this.mapTypeComboBox.Text, 0);

            this.mapWebBrowser.Navigate(url);
        }

        #endregion

        //////////////////////////////////////////////////////////////////////////////// Function

        #region 구글 맵 타밉 코드 구하기 - GetGoogleMapTypeCode(mapType)

        /// <summary>
        /// 구글 맵 타밉 코드 구하기
        /// </summary>
        /// <param name="mapType">맵 타입</param>
        /// <returns>구글 맵 타입 코드</returns>
        private string GetGoogleMapTypeCode(string mapType)
        {
            switch(mapType)
            {
                case "맵"         : return "m";
                case "위성"       : return "k";
                case "하이브리드" : return "h";
                case "지형"       : return "p";
                case "구글 어스"  : return "e";
                default           : return null;
            }
        }

        #endregion
        #region 구글 맵 URL 구하기 - GetGoogleMapURL(address, mapType, zoom)

        /// <summary>
        /// 구글 맵 URL 구하기
        /// </summary>
        /// <param name="address">주소</param>
        /// <param name="mapType">맵 타입</param>
        /// <param name="zoom">확대/축소</param>
        /// <returns>구글 맵 URL</returns>
        /// <remarks>
        /// 주소      : "loc"로 시작하면 위도+경로 이다.
        /// 맵 타입
        ///     m : 맵
        ///     k : 위성
        ///     h : 하이브리드
        ///     p : 지형
        ///     e : 구글 어스
        /// 확대/축소 : 1 - 20
        /// </remarks>
        private string GetGoogleMapURL(string address, string mapType, int zoom)
        {
            StringBuilder stringBuilder = new StringBuilder("http://maps.google.com/maps?");

            stringBuilder.Append("q=");
            stringBuilder.Append(HttpUtility.UrlEncode(address, Encoding.UTF8));

            string googleMapType = GetGoogleMapTypeCode(mapType);

            if(googleMapType != null)
            {
                stringBuilder.Append("&t=");
                stringBuilder.Append(googleMapType);
            }

            if(zoom > 0)
            {
                stringBuilder.Append("&z=");
                stringBuilder.Append(zoom.ToString());
            }

            return stringBuilder.ToString();
        }

        #endregion
        #region 레지스트리 값 설정하기 - SetRegistryValue(registryName, valueName, value)

        /// <summary>
        /// 레지스트리 값 설정하기
        /// </summary>
        /// <param name="registryName">레지스트리 명칭</param>
        /// <param name="valueName">값 명칭</param>
        /// <param name="value">값</param>
        private void SetRegistryValue(string registryName, string valueName, int value)
        {
            RegistryKey registryKey = Registry.CurrentUser.OpenSubKey(registryName, true);

            if(registryKey == null)
            {
                registryKey = Registry.CurrentUser.CreateSubKey(registryName, RegistryKeyPermissionCheck.ReadWriteSubTree);
            }

            registryKey.SetValue(valueName, value, RegistryValueKind.DWord);

            registryKey.Close();
        }

        #endregion
        #region 웹 브라우저 버전 설정하기 - SetWebBrowserVersion(internetExplorerVersion)

        /// <summary>
        /// 웹 브라우저 버전 설정하기
        /// </summary>
        /// <param name="internetExplorerVersion">인터넷 익스플로러 버전</param>
        private void SetWebBrowserVersion(int internetExplorerVersion)
        {
            const string REGISTRY_KEY_64BIT = @"SOFTWARE\Wow6432Node\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EMULATION";
            const string REGISTRY_KEY_32BIT = @"SOFTWARE\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EMULATION";

            string appDomainName = AppDomain.CurrentDomain.FriendlyName;

            SetRegistryValue(REGISTRY_KEY_64BIT, appDomainName, internetExplorerVersion);
            SetRegistryValue(REGISTRY_KEY_32BIT, appDomainName, internetExplorerVersion);
        }

        #endregion
    }
}
728x90
반응형
그리드형(광고전용)
Posted by icodebroker

댓글을 달아 주세요