상세 컨텐츠

본문 제목

C # 으로 툴바 만들기

C#/BHO

by 탑~! 2012. 3. 23. 15:38

본문

사실 익스플로러 툴바, BHO를 (브라우저 도우미 개체)를 만드 는게 여간 힘든일이 아닙니다. 에서 COM을 써야할 뿐더러 일반적인 프로그램이 아니기 때문에 정보조차 잘 없죠.

하지만 C #을으로 만들면 정말 쉽습니다.

우선 전 코드 프로젝트를 참고했습니다.

밴드 객체 -가. NET 2.0 Redux
http://www.codeproject.com/csharp/BandObjects20.asp?select=1819328&df=100&forumid=306921&exp=0
 

위의 소스 파일은 코드 프로젝트의 소스를 사용하기 쉽게 약간 수정한 파일입니다. 기본 구조는 코드 프로젝트 소스와 마찬가지로 BandObject 클래스를 상속받는 것입니다. 

우선 다음 두 개의 레퍼런스를 추가하도록 합니다. 에서 COM의 MSHTML에 (마이크로 소프트 HTML Object Library를)과 SHDocVw (Microsoft Internet 컨트롤)입니다. 두 레퍼런스를 추가하면 개체 브라우저에서 이들 어셈블리를 볼 수있습니다.

다음 단계는 BandObject 클래스를 상속 받아 실제 툴바를 구현하는 단계입니다. 아래 코드는 사용자 참여 웹 툴바에서 사용된 예이며, 툴바와 BHO를 구현에 필요한 핵심적인 코드만 적어 놓았습니다. 의 GUID는 자신의 Guid를 적으세요.

 

     1 [Guid ("719FAB8A - 8E67 - 915D - 4ba6 - 4EE1AD3A2CEE")]

2[BandObject ("사용자 참여 웹 툴바", BandObjectStyle.Horizontal |

3BandObjectStyle.ExplorerToolbar, HelpText = "사용자 참여 웹 툴바")]

4 공개 클래스 UpwBandObject : BandObject

5(

6     공개 UpwBandObject ()

7(

8의 InitializeComponent ();

9 

10minSize = 새로운 크기(100, 27); / / 최소 크기를 반드시 적어 줘야합니다.

11 

12SetSiteEvent + = 새로운 SetSiteEventHandler (UpwBandObject_SetSiteEvent);

13ShowDWEvent + = 새로운 ShowDWEventHandler (UpwBandObject_ShowDWEvent);

14)

15     사설 무효 UpwBandObject_ShowDWEvent (bool fShow)

16(

17toolbarVisible = fShow;

18 

19RefreshCurrentSite ();

20)

21 

22     사설 무효 UpwBandObject_SetSiteEvent (개체 pUnkSite)

23(

24         만약 (pUnkSite! = 계열)

25(

26             / / 이벤트를 추가할 수

27webBrowserClass.BeforeNavigate2 + =

28                 새로운 DWebBrowserEvents2_BeforeNavigate2EventHandler (webBrowser_BeforeNavigate2);

29webBrowserClass.NavigateComplete2 + =

30                 새로운 DWebBrowserEvents2_NavigateComplete2EventHandler (webBrowser_NavigateComplete2);

31webBrowserClass.DocumentComplete + =

32                 새로운 DWebBrowserEvents2_DocumentCompleteEventHandler () webBrowser_DocumentComplete;

33)

34         그 밖의 

35(

36             / / 이벤트를 제거합니다

37-= webBrowserClass.BeforeNavigate2

38                 새로운 DWebBrowserEvents2_BeforeNavigate2EventHandler (webBrowser_BeforeNavigate2);

39-= webBrowserClass.NavigateComplete2

40                 새로운 DWebBrowserEvents2_NavigateComplete2EventHandler (webBrowser_NavigateComplete2);

41-= webBrowserClass.DocumentComplete

42                 새로운 DWebBrowserEvents2_DocumentCompleteEventHandler () webBrowser_DocumentComplete;

43)

44)

45 

46     사설 무효 webBrowser_BeforeNavigate2

47(개체 pDisp, 심판 개체 홈페이지, 심판 개체 깃발, 심판 개체 TargetFrameName,

48               심판 개체 PostData, 심판 개체 헤더, 심판 bool 취소)

49(

50)

51 

52     사설 무효 webBrowser_NavigateComplete2 (개체 pDisp, 심판 개체 URL이)

53(

54)

55 

56     사설 무효 webBrowser_DocumentComplete (개체 pDisp, 심판 개체 URL이)

57(

58)

59 

60     사설 무효 탐색 (문자열 URL이)

61(

62         개체 플래그 = 계열;

63         개체 targetFrameName = 계열;

64         개체 PostData = 계열;

65         개체 헤더 = 계열;

66 

67(URL을 webBrowserClass.Navigate 심판 플래그 심판 targetFrameName, 심판 PostData, 심판 헤더);

68)

69)

 
컴파일 전에 System.Windows.Forms,을 사용하여 레퍼런스를 추가하고 다음 System.Drawing 코드에 넣습니다.
 

   사용 System.Windows.Forms;

   사용 System.Runtime.InteropServices;

   사용 SHDocVw;

   사용 System.Reflection;

   사용 System.Drawing;

   사용 System.ComponentModel;

   사용 Microsoft.Win32;

 
웹 브라우저 클래스의 이벤트들이 바로 BHO를 부분입니다. 이벤트에 관련된 부분은 비주얼 스튜디오의 개체 브라우저를 보면서 추가할 수있습니다. 물론은 MSDN에도 짧게 나마 설명이있습니다.

UserControl을을 상속 받으면 비주얼 스튜디오에서는 디자이너로 폼을 편집할 수있습니다. 디자이너보기를 클릭해서 나오는 화면이 툴바에 나오게 될 화면입니다. 그 부분은 개발하고자하는 툴바에 맞춰서 디자인하시면됩니다.

마지막 단계는 실제 툴바를 익스플로러에 등록하는 과정입니다. 우선 프로젝트 속성의 어셈블리 정보에서 확인 어셈블리에서 COM - 표시을 체크하고 컴파일을합니다. 또 강력한 이름으로 어셈블리 서명을 위해 (. snk)가 필요한데 이것 역시 프로젝트 속성에서 만들 수있습니다.

그리고 빌드 후에 다음 명령을 실행시킵니다. (우편 빌드 이벤트에 등록 해놓 으면 되겠죠.)

$ (TARGETDIR 경우) cd

는 "C : \ 프로그램 파일 \의 Microsoft Visual Studio 8 \ SDK의 \ v2.0이 \ 휴지통 \ gacutil"/면 Interop.shdocvw.dll을
는 "C : \ 프로그램 파일 \의 Microsoft Visual Studio 8 \ SDK의 \ v2.0이 \ 휴지통 \ gacutil"/ $ (TargetFileName 경우)
는 "C : \ WINDOWS를 \ Microsoft.NET \ Framework에서 \ v2.0.50727 \ regasm"/ $ 등록을 취소 (TargetFileName)
는 "C : \ WINDOWS를 \ Microsoft.NET \ Framework에서 \ v2.0.50727 \ regasm"/ $ 코드베이스 (TargetFileName)

익스플로러를 열면 툴바 영역에서 등록된 툴바가 메뉴에 표시됩니다.

디버깅은 프로퍼티의 시작 액션에 externel 프로그램으로 익스플로러를 지정하면됩니다.


출처 : 
http://blog.daum.net/picus2/195