none
[TIP][C#] Reflection을 이용하여 인터넷 익스플로러 실행하기 RRS feed

답변

  • 안녕하세요.
    이번 강좌는 Reflection을 이용한 Internet Explorer 실행하기 입니다.
    개발을 하시다 보면은 필요에 의해서 인터넷 익스플로러를 실행을 하시는 경우가 생기게 됩니다.

    기존에 C# 코드를 이용한 Reflection을 활용하는 법을 알아보겠습니다.
    일단 IE Com을 ProgID를 얻어오는 구문과 IE에 해당하는 메소드 및 프로퍼티에 대한 값을 넣어주는 부분이
    되겠습니다.


    이 부분만 보시면 금방 이해되실 겁니다.

    StringBuilder query = new StringBuilder("http://www.google.com");
    string u = query.ToString();
    object urls = u;
    System.Type oType = System.Type.GetTypeFromProgID("InternetExplorer.Application");
    object o = System.Activator.CreateInstance(oType);
    o.GetType().InvokeMember("menubar", System.Reflection.BindingFlags.SetProperty, null, o, new object[]{ 0 });
    o.GetType().InvokeMember("toolbar", System.Reflection.BindingFlags.SetProperty, null, o, new object[]{ 0 });
    o.GetType().InvokeMember("statusBar", System.Reflection.BindingFlags.SetProperty, null, o, new object[] { 0 });
    o.GetType().InvokeMember("addressbar", System.Reflection.BindingFlags.SetProperty, null, o, new object[]{ 0 });
    o.GetType().InvokeMember("width", System.Reflection.BindingFlags.SetProperty, null, o, new object[] { 570 });
    o.GetType().InvokeMember("height", System.Reflection.BindingFlags.SetProperty, null, o, new object[] { 590 });
    o.GetType().InvokeMember("Resizable", System.Reflection.BindingFlags.SetProperty, null, o, new object[] { false });
    o.GetType().InvokeMember("Visible", System.Reflection.BindingFlags.SetProperty, null, o, new object[] { true });
    o.GetType().InvokeMember("Navigate", System.Reflection.BindingFlags.InvokeMethod, null, o, new object[]{ urls });

    음.. 프로그램에서 IE에 대해서 창만 보이고 싶거나 혹은 툴바, 주소창 등을 제어하고 싶으시면 위 방법처럼
    사용하시면 됩니다.


    일단 Reflection을 이용한 프로그램은 많은 부분을 알고 계셔야 합니다만, 지금은 IE를 활용하는 부분에
    대해서 간단한 
    소스를 직접 만들었습니다^^

    참..그리고 XP에서는 문제가 없는데요.. 비스타의 경우 UAC가 켜져있는 경우에는 Visual Studio를 관리자
    권한으로 실행하지 않았을 경우에는 똑같은 창 하나가 빈 페이지 상태로 뜨게 됩니다 그리고 나서 본래의
    페이지가 뜨게 되는데요..


    이유는 IE가 관리자 권한이 없을 때 임시권한으로 IE를 실행하고 그 창에서 다시 본래의 의도한 창이 뜨게 됩니다.
    따라서, 관리자 권한으로 Visual Studio를 실행해서 개발하시거나, UAC를 끄시거나 스크립트를 이용한
    권한을
    부여받아야 합니다.


    • 답변으로 표시됨 devlife 2012년 5월 10일 목요일 오전 6:47
    2012년 5월 10일 목요일 오전 6:47