다음을 통해 공유


확장성 인터페이스를 사용하여 UI 기능 사용자 지정

업데이트: 2007년 11월

적용 대상

이 항목의 정보는 지정된 Visual Studio Tools for Office 프로젝트 및 Microsoft Office 버전에만 적용됩니다.

프로젝트 형식

  • 응용 프로그램 수준 프로젝트

Microsoft Office 버전

  • 2007 Microsoft Office system

자세한 내용은 응용 프로그램 및 프로젝트 형식에 따라 사용 가능한 기능을 참조하십시오.

Visual Studio Tools for Office에서는 여러 가지 구현 정보를 사용하여 응용 프로그램 수준 추가 기능의 사용자 지정 작업 창, 리본 메뉴 사용자 지정 및 Outlook 양식 영역을 만들 때 구현 정보를 처리하는 클래스 및 디자이너를 제공합니다. 그러나 특별한 요구 사항이 있는 경우 사용자가 직접 각 기능에 대한 확장성 인터페이스를 구현할 수도 있습니다.

확장성 인터페이스 개요

2007 Microsoft Office system의 응용 프로그램에서는 COM 추가 기능에서 일부 UI(사용자 인터페이스) 기능을 사용자 지정하기 위해 구현할 수 있는 확장성 인터페이스의 집합을 정의합니다. Visual Studio Tools for Office에서는 이러한 인터페이스를 자동으로 구현하고 대신 사용할 수 있는 클래스 및 디자이너를 제공하여 이 프로세스를 단순화합니다. 그러나 추가 기능에서 직접 확장성 인터페이스를 구현할 수도 있습니다.

Visual Studio Tools for Office에서 이러한 기능을 위해 제공하는 클래스 및 디자이너에 대한 자세한 내용은 사용자 지정 작업 창 개요, 리본 디자이너Outlook 양식 영역 만들기를 참조하십시오.

추가 기능에서 구현할 수 있는 확장성 인터페이스

다음 표에는 구현할 수 있는 확장성 인터페이스 및 확장성 인터페이스를 지원하는 응용 프로그램이 나와 있습니다.

인터페이스

설명

응용 프로그램

Microsoft.Office.Core.IRibbonExtensibility

리본 UI를 사용자 지정하려면 이 인터페이스를 구현합니다. 자세한 내용은 2007 Microsoft Office 설명서의 IRibbonExtensibility Object를 참조하십시오.

참고:
프로젝트에 리본(XML) 항목을 추가하여 추가 기능에 Microsoft.Office.Core.IRibbonExtensibility의 기본 구현을 생성할 수 있습니다. 자세한 내용은 리본 XML을 참조하십시오.

Excel 2007

InfoPath 2007

Outlook 2007

PowerPoint 2007

Word 2007

Microsoft.Office.Core.ICustomTaskPaneConsumer

사용자 지정 작업 창을 만들려면 이 인터페이스를 구현합니다. 자세한 내용은 2007 Microsoft Office 설명서의 ICustomTaskPaneConsumer Object를 참조하십시오.

Excel 2007

Outlook 2007

PowerPoint 2007

Word 2007

Microsoft.Office.Interop.Outlook.FormRegionStartup

Outlook 양식 영역을 만들려면 이 인터페이스를 구현합니다. 자세한 내용은 2007 Microsoft Office 설명서의 FormRegionStartup Interface를 참조하십시오.

Outlook 2007

2007 Microsoft Office system의 응용 프로그램에는 Microsoft.Office.Core.IBlogExtensibility, Microsoft.Office.Core.EncryptionProviderMicrosoft.Office.Core.SignatureProvider 등의 다른 여러 확장성 인터페이스가 정의되어 있습니다. Visual Studio Tools for Office에서는 추가 기능에 이러한 인터페이스를 구현할 수 없습니다.

확장성 인터페이스 사용

확장성 인터페이스를 사용하여 UI 기능을 사용자 지정하려면 추가 기능 프로젝트에서 적절한 인터페이스를 구현합니다. 그런 다음 해당 인터페이스를 구현하는 클래스의 인스턴스를 반환하도록 RequestService 메서드를 재정의합니다.

Excel용 추가 기능에서 Microsoft.Office.Core.IRibbonExtensibilityMicrosoft.Office.Core.ICustomTaskPaneConsumer 인터페이스를 구현하는 방법을 보여 주는 샘플 응용 프로그램은 런타임 서비스 샘플을 참조하십시오.

확장성 인터페이스의 구현 예제

다음 코드 예제에서는 사용자 지정 작업 창을 만들기 위한 Microsoft.Office.Core.ICustomTaskPaneConsumer 인터페이스의 간단한 구현을 보여 줍니다. 이 예제에서는 다음 두 개의 클래스를 정의합니다.

  • Microsoft.Office.Core.ICustomTaskPaneConsumer를 구현하여 사용자 지정 작업 창을 만들고 표시하는 TaskPaneHelper 클래스

  • 작업 창의 UI를 제공하는 TaskPaneUI 클래스. TaskPaneUI 클래스의 특성은 Microsoft Office 응용 프로그램에서 클래스를 검색할 수 있도록 COM에 해당 클래스를 표시합니다. 이 예제에서 UI는 빈 UserControl이지만 코드를 수정하여 컨트롤을 추가할 수 있습니다.

    참고:

    COM에 TaskPaneUI 클래스를 노출하려면 프로젝트의 COM Interop 등록 속성도 설정해야 합니다. 자세한 내용은 방법: 구성 요소 COM Interop 등록을 참조하십시오.

Public Class TaskPaneHelper
    Implements Office.ICustomTaskPaneConsumer

    Friend taskPane As Office.CustomTaskPane

    Public Sub CTPFactoryAvailable(ByVal CTPFactoryInst As Office.ICTPFactory) _
        Implements Office.ICustomTaskPaneConsumer.CTPFactoryAvailable

        If CTPFactoryInst IsNot Nothing Then
            ' Create a new task pane.
            taskPane = CTPFactoryInst.CreateCTP( _
                "Microsoft.Samples.Vsto.VB.TaskPaneUI", "Contoso")
            taskPane.Visible = True
        End If
    End Sub
End Class

<System.Runtime.InteropServices.ComVisible(True)> _
<System.Runtime.InteropServices.ProgId("Microsoft.Samples.Vsto.VB.TaskPaneUI")> _
<System.Runtime.InteropServices.Guid("FFA0920E-F7A5-453d-8AB2-249F4C25B4B2")> _
Public Class TaskPaneUI
    Inherits UserControl
End Class
public class TaskPaneHelper : Office.ICustomTaskPaneConsumer
{
    internal Office.CustomTaskPane taskPane;

    public void CTPFactoryAvailable(Office.ICTPFactory CTPFactoryInst)
    {
        if (CTPFactoryInst != null)
        {
            // Create a new task pane.
            taskPane = CTPFactoryInst.CreateCTP(
                "Microsoft.Samples.Vsto.CS.TaskPaneUI",
                "Contoso", Type.Missing);
            taskPane.Visible = true;
        }
    }
}

[System.Runtime.InteropServices.ComVisible(true)]
[System.Runtime.InteropServices.ProgId("Microsoft.Samples.Vsto.CS.TaskPaneUI")]
[System.Runtime.InteropServices.Guid("FFA0920E-F7A5-453d-8AB2-249F4C25B4B2")]
public class TaskPaneUI : UserControl
{
}

Microsoft.Office.Core.ICustomTaskPaneConsumer 구현에 대한 자세한 내용은 2007 Microsoft Office 설명서의 Creating Custom Task Panes in the 2007 Office System을 참조하십시오.

RequestService 메서드의 재정의 예제

다음 코드 예제에서는 RequestService 메서드를 재정의하여 이전 코드 예제에서 정의한 TaskPaneHelper 클래스의 인스턴스를 반환하는 방법을 보여 줍니다. serviceGuid 매개 변수의 값을 검사하여 요청된 인터페이스를 확인한 다음 해당 인터페이스를 구현하는 개체를 반환합니다.

Friend taskPaneHelper1 As TaskPaneHelper

Protected Overrides Function RequestService( _
    ByVal serviceGuid As Guid) As Object

    If (serviceGuid = GetType(Office.ICustomTaskPaneConsumer).GUID) Then
        If (taskPaneHelper1 Is Nothing) Then
            taskPaneHelper1 = New TaskPaneHelper()
        End If
        Return taskPaneHelper1
    End If

    Return MyBase.RequestService(serviceGuid)
End Function
internal TaskPaneHelper taskPaneHelper1;

protected override object RequestService(Guid serviceGuid)
{
    if (serviceGuid == typeof(Office.ICustomTaskPaneConsumer).GUID)
    {
        if (taskPaneHelper1 == null)
        {
            taskPaneHelper1 = new TaskPaneHelper();
        }
        return taskPaneHelper1;
    }

    return base.RequestService(serviceGuid);
}

참고 항목

작업

런타임 서비스 샘플

방법: Visual Studio Tools for Office 프로젝트 만들기

개념

응용 프로그램 수준 추가 기능 프로그래밍

Office 솔루션 개발

추가 기능 호스트 항목

다른 Office 솔루션에서 응용 프로그램 수준 추가 기능의 코드 호출

응용 프로그램 수준 추가 기능 아키텍처