Как создать библиотеку DLL смарт-тега в ATL для использования в Office XP

Переводы статьи Переводы статьи
Код статьи: 292596 - Vizualiza?i produsele pentru care se aplic? acest articol.
Эта статья помещена в архив. Она предлагается "как есть" и обновляться не будет.
Развернуть все | Свернуть все

В этой статье

Аннотация

Смарт-теги — это технология, реализованную в Microsoft Office XP, предоставить пользователям Office более интерактивного содержимого приложений Office документы. Смарт-тега является элементом текста в документ Office распознается как имеющий пользовательские действия, связанные с ним. Пример одной из Эти специальные элементы текста может быть имя электронной почты, который пользователь введет в Документ Word или книги Excel. Если имя электронной почты будет распознан как смарт Тег, пользователь видит одно или несколько действий, выполняемых на этот текст. Возможные действия, связанные с именем электронной почты: поиск Дополнительные контактные данные или отправить новое сообщение электронной почты, контакт.

Возможности Office XP можно расширить путем разработки собственный распознаватель смарт-тег и действие динамической библиотеки (DLL) для использования в Документы Microsoft Office. В данной статье описывается построение библиотеки DLL смарт-тега с помощью Active Template Library (ATL) и обсуждаются параметры реестра, необходимые для пакета Office XP для определения и использования библиотеки DLL смарт-тега.

ПРИМЕЧАНИЕ: Microsoft Excel 2002 и Microsoft Word 2002 — только приложения Office XP Поддержка смарт-тегов. Тем не менее сведения, представленные в данном статьи могут быть применены к разработке смарт-тегов для любого приложения, которое использует Технология смарт-тега. Библиотеки DLL смарт-тега — это стандартная модель компонентных объектов (COM) Библиотека DLL, которая реализует два специальных интерфейсов: ISmartTagRecognizer и ISmartTagAction. В ISmartTagRecognizer интерфейс распознает текст, введенный в документ как Смарт-тег. В ISmartTagAction интерфейс выполняет действия над конкретной строки смарт-тега запрос пользователя. Не требуется реализации этих интерфейсов в той же библиотеки DLL. Имеется возможность распознавания DLL и выберите один или несколько действий библиотек DLL расширить один тип смарт-тега для различных действий.




Действия, чтобы создать библиотеку DLL смарт-тега в ATL


Следующие шаги создания простого смарт-тега Библиотека DLL, которая распознает контакты службы мгновенных сообщений Microsoft Network (MSN) и дает пользователю возможность отправки электронной почты или мгновенном сообщении распознанный контакт. Для использования в этом примере требуется службы мгновенных сообщений. Если у вас нет Службы мгновенных сообщений, можно получить копию из MSN веб-узла:
http://Messenger.MSN.com/

  1. В Visual C++ создайте новый проект ATL COM AppWizard. Имя проект MessengerSmartTag.
  2. Нажмите кнопку ОК Чтобы запустить мастер ATL COM. Убедитесь, что в следующем диалоговом окне , Библиотека динамической компоновки установлен и нажмите кнопку Окончание. Нажмите кнопку ОК Чтобы создать проект.
  3. Для создания Распознаватель класс в Вставка меню, нажмите кнопку Новый объект ATL. Выберите Простой объект и нажмите Далее. Введите короткое имя Распознаватель и Нажмите кнопку ОК.
  4. Для создания Действие класс, следуйте инструкциям в шаге 3, но тип Действие Краткое имя.
  5. Открытие представления классов и разверните узел Классы MessengerSmartTag. Щелкните правой кнопкой мыши CRecognizer класс, а затем выберите Реализовать интерфейс. Нажмите кнопку ОК Когда появится диалоговое окно предупреждения. Нажмите кнопку Обзор и выберите Корпорация Майкрософт смарт-тегов 1.0 библиотеки типов. Выберите ISmartTagRecognizer и ISmartTagRecognizer2 интерфейс и нажмите клавишу ОК.

    ПРИМЕЧАНИЕ: Расположение по умолчанию для типа 1.0 корпорация Майкрософт смарт-тегов Библиотека — это C:\Program Files\Common Files\Microsoft Shared\Mstag.tlb.
  6. В представления классов, щелкните правой кнопкой мыши CAction класс, а затем выберите Реализовать интерфейс. Нажмите кнопку ОК Когда появится диалоговое окно предупреждения. Нажмите кнопку Обзор и выберите Корпорация Майкрософт смарт-тегов 1.0 библиотеки типов. Выберите ISmartTagAction и ISmartTagAction2 интерфейс и нажмите кнопку ОК.
  7. Откройте файл Recognizer.h и замените содержимое класса с помощью следующего кода:
    ///////////////////////////////////////////////////////////////////////////// 
    // CRecognizer
    #include "Resource.h"
    #import "C:\Program Files\Common Files\Microsoft Shared\Smart Tag\MSTAG.TLB" raw_interfaces_only, raw_native_types, no_namespace, named_guids 
    class ATL_NO_VTABLE CRecognizer : 
       public CComObjectRootEx<CComSingleThreadModel>,
       public CComCoClass<CRecognizer, &CLSID_Recognizer>,
       public IDispatchImpl<IRecognizer, &IID_IRecognizer, &LIBID_MESSENGERSMARTTAGLib>,
       public IDispatchImpl<ISmartTagRecognizer, &IID_ISmartTagRecognizer, &LIBID_SmartTagLib>,
       public IDispatchImpl<ISmartTagRecognizer2, &IID_ISmartTagRecognizer2, &LIBID_SmartTagLib>
    {
    public:
    
        CRecognizer();
        ~CRecognizer();
    
    DECLARE_REGISTRY_RESOURCEID(IDR_RECOGNIZER)
    
    DECLARE_PROTECT_FINAL_CONSTRUCT()
    
    BEGIN_COM_MAP(CRecognizer)
        COM_INTERFACE_ENTRY(IRecognizer)
    //Removed -- COM_INTERFACE_ENTRY(IDispatch)
        COM_INTERFACE_ENTRY2(IDispatch, IRecognizer)
        COM_INTERFACE_ENTRY(ISmartTagRecognizer)
        COM_INTERFACE_ENTRY(ISmartTagRecognizer2)
    END_COM_MAP()
    
    // IRecognizer
    public:
    // ISmartTagRecognizer
        STDMETHOD(get_ProgId)(BSTR * ProgId);
        STDMETHOD(get_Name)(INT LocaleID, BSTR * Name);
        STDMETHOD(get_Desc)(INT LocaleID, BSTR * Desc);
        STDMETHOD(get_SmartTagCount)(INT * Count);
        STDMETHOD(get_SmartTagName)(INT SmartTagID, BSTR * Name);
        STDMETHOD(get_SmartTagDownloadURL)(INT SmartTagID, BSTR * DownloadURL);
        STDMETHOD(Recognize)(BSTR Text, IF_TYPE DataType, INT LocaleID,
                      ISmartTagRecognizerSite * RecognizerSite);
    private:
        long lCount;
        SAFEARRAY *psa;
    // ISmartTagRecognizer2
        STDMETHOD(Recognize2)(BSTR Text, IF_TYPE DataType, INT LocaleID, ISmartTagRecognizerSite2 * RecognizerSite2, BSTR ApplicationName, ISmartTagTokenList * TokenList)
        {
            return E_NOTIMPL;
        }
        STDMETHOD(get_PropertyPage)(INT SmartTagID, INT LocaleID, VARIANT_BOOL * HasPropPage)
        {
            if (HasPropPage == NULL)
                return E_POINTER;
    		    
            return E_NOTIMPL;
        }
        STDMETHOD(DisplayPropertyPage)(INT SmartTagID, INT LocaleID)
        {
            return E_NOTIMPL;
        }
        STDMETHOD(SmartTagInitialize)(BSTR ApplicationName)
        {
            return E_NOTIMPL;
        }
    };
    					
  8. Откройте файл Recognizer.cpp и добавьте следующий код для конец файла:
    CRecognizer::CRecognizer()
    {
        Messenger::IMsgrObject2Ptr oMsgrObj = NULL;
        Messenger::IMsgrUsersPtr oUsers = NULL;
        Messenger::IMsgrUserPtr oUser = NULL;
        SAFEARRAYBOUND rgsaBound[1];
        long rgIndices[1];		
        HRESULT hr;
    		
        // Create an instance of Instant Messenger.
        oMsgrObj.CreateInstance("Messenger.MsgrObject");
        // Get the list of contacts
        oUsers = oMsgrObj->GetList(Messenger::MLIST_CONTACT);
        // Store the number of contacts you have.
        lCount = oUsers->GetCount();
        rgsaBound[0].lLbound = 0;
        rgsaBound[0].cElements = lCount;
        // Create a SAFEARRAY to hold the list of contacts.
        psa = SafeArrayCreate(VT_VARIANT, 1, rgsaBound);
        // Loop through all contacts.
        for (long l=0; l<lCount-1; l++)
        {
            rgIndices[0] = l;	
            // Set the specific user.
            oUser = oUsers->Item(l);
            // Convert the Friendly Name to lower case
            // and store it in a VARIANT.
            _variant_t v = _wcslwr(oUser->GetFriendlyName());
            // Put the VARIANT into the SAFEARRAY.
           hr = SafeArrayPutElement(psa, rgIndices, &v);
        }
    }
    
    CRecognizer::~CRecognizer()
    {
        // Destroy the SAFEARRAY.
        SafeArrayDestroy(psa);
    }
    
    
    HRESULT CRecognizer::get_ProgId(BSTR * ProgId)
    {
        // Set the ProgID of the Recognizer interface.
        *ProgId = SysAllocString(L"MessengerSmartTag.Recognizer");
        return S_OK;
    }
    
    HRESULT CRecognizer::get_Name(INT LocaleID, BSTR * Name)
    {
        // Set a short title about the recognizer.
        *Name = SysAllocString(L"Microsoft Messenger Contacts Visual C++ Recognizer");
        return S_OK;
    }
    
    HRESULT CRecognizer::get_Desc(INT LocaleID, BSTR * Desc)
    {
        // Set a long description of the recognizer.
        *Desc = SysAllocString(L"Microsoft Messenger recognizes your Instant Messenger Contacts");
        return S_OK;
    }
    
    HRESULT CRecognizer::get_SmartTagCount(INT * Count)
    {
        // Set the number of Smart Tags that are supported.
        *Count = 1;
        return S_OK;
    }
    
    HRESULT CRecognizer::get_SmartTagName(INT SmartTagID, BSTR * Name)
    {
        // This method is called the same number of times as you
        // return in SmartTagCount. This method sets a unique name
        // for the Smart Tag.
        *Name = SysAllocString(L"microsoft/messenger#contacts");
        return S_OK;
    }
    
    HRESULT CRecognizer::get_SmartTagDownloadURL(INT SmartTagID, BSTR * DownloadURL)
    {
        // Set the URL that gets embedded in documents.
        *DownloadURL = NULL;
        return S_OK;
    }
    
    HRESULT CRecognizer::Recognize(BSTR Text, IF_TYPE DataType, INT LocaleID,
           ISmartTagRecognizerSite * RecognizerSite)
    {
        // The Recognize method is called and passed a text value.
        // You should recognize strings in the text and set up the actions.
        WCHAR *pch, *strText = _wcslwr(Text);
        ISmartTagProperties  *pSmartTagProp = NULL;
        long rgIndices[1];
        HRESULT hr;
    
        // Look through all contacts
        for (long l = 0; l<lCount; l++)
        {
            rgIndices[0] = l;
    
            // Get the contact name.
            _variant_t v;
            hr = SafeArrayGetElement(psa,rgIndices,&v);
            // Convert the VARIANT to a BSTR.
            _bstr_t bstrContact = v;
            // Loop through the string looking for contacts.
            for (pch = strText; (pch = wcsstr(pch, bstrContact))!=NULL; pch++)
            {    
                // Create a new property bag.
                hr = RecognizerSite->GetNewPropertyBag(&pSmartTagProp);
                if (SUCCEEDED(hr)) {
                    // Commit the Smart Tag to the property bag.		                
                    hr = RecognizerSite->CommitSmartTag(
                          _bstr_t("microsoft/messenger#contacts"),
                          pch - strText+1, wcslen(bstrContact),
                          pSmartTagProp);
                    
                    if (pSmartTagProp != NULL)
                        pSmartTagProp->Release();
                }
            }
        }
        return S_OK;
    }
    					
  9. Откройте файл Action.h и замените содержимое класс с помощью следующего кода:
    ///////////////////////////////////////////////////////////////////////////// 
    // CAction
    #include "Resource.h"
    #import "C:\Program Files\Common Files\Microsoft Shared\Smart Tag\MSTAG.TLB" raw_interfaces_only, raw_native_types, no_namespace, named_guids 
    class ATL_NO_VTABLE CAction : 
       public CComObjectRootEx<CComSingleThreadModel>,
       public CComCoClass<CAction, &CLSID_Action>,
       public IDispatchImpl<IAction, &IID_IAction, &LIBID_MESSENGERSMARTTAGLib>,
       public IDispatchImpl<ISmartTagAction, &IID_ISmartTagAction, &LIBID_SmartTagLib>,
       public IDispatchImpl<ISmartTagAction2, &IID_ISmartTagAction2, &LIBID_SmartTagLib>
    {
    public:
       CAction(){}
    
    DECLARE_REGISTRY_RESOURCEID(IDR_ACTION)
    
    DECLARE_PROTECT_FINAL_CONSTRUCT()
    
    BEGIN_COM_MAP(CAction)
        COM_INTERFACE_ENTRY(IAction)
    //Removed -- COM_INTERFACE_ENTRY(IDispatch)
        COM_INTERFACE_ENTRY2(IDispatch, IAction)
        COM_INTERFACE_ENTRY(ISmartTagAction)
        COM_INTERFACE_ENTRY(ISmartTagAction2)
    END_COM_MAP()
    
    // IAction
    public:
    // ISmartTagAction
        STDMETHOD(get_ProgId)(BSTR * ProgId);
        STDMETHOD(get_Name)(INT LocaleID, BSTR * Name);
        STDMETHOD(get_Desc)(INT LocaleID, BSTR * Desc);
        STDMETHOD(get_SmartTagCount)(INT * Count);
        STDMETHOD(get_SmartTagName)(INT SmartTagID, BSTR * Name);
        STDMETHOD(get_SmartTagCaption)(INT SmartTagID, INT LocaleID,
                      BSTR * Caption);
        STDMETHOD(get_VerbCount)(BSTR SmartTagName, INT * Count);
        STDMETHOD(get_VerbID)(BSTR SmartTagName, INT VerbIndex, INT * VerbID);
        STDMETHOD(get_VerbCaptionFromID)(INT VerbID, BSTR ApplicationName,
                      INT LocaleID, BSTR * Caption);
        STDMETHOD(get_VerbNameFromID)(INT VerbID, BSTR * Name);
        STDMETHOD(InvokeVerb)(INT VerbID, BSTR ApplicationName,
                      IDispatch * Target, ISmartTagProperties * Properties,
                      BSTR Text, BSTR Xml);
    // ISmartTagAction2
        STDMETHOD(get_VerbCaptionFromID2)(INT VerbID, BSTR ApplicationName, INT LocaleID, ISmartTagProperties * Properties, BSTR Text, BSTR Xml, IDispatch * Target, BSTR * Caption)
        {
            if (Caption == NULL)
                return E_POINTER;
    
            return E_NOTIMPL;
        }
        STDMETHOD(InvokeVerb2)(INT VerbID, BSTR ApplicationName, IDispatch * Target, ISmartTagProperties * Properties, BSTR Text, BSTR Xml, INT LocaleID)
        {
            return E_NOTIMPL;
        }
        STDMETHOD(get_IsCaptionDynamic)(INT VerbID, BSTR ApplicationName, INT LocaleID, VARIANT_BOOL * Dynamic)
        {
            if (Dynamic == NULL)
                return E_POINTER;
    
            return E_NOTIMPL;
        }
        STDMETHOD(get_ShowSmartTagIndicator)(INT VerbID, BSTR ApplicationName, INT LocaleID, VARIANT_BOOL * Visible)
        {
            if (Visible == NULL)
                return E_POINTER;
    
            return E_NOTIMPL;
        }
        STDMETHOD(SmartTagInitialize)(BSTR ApplicationName)
        {
            return E_NOTIMPL;
        }
    };
    					
  10. Откройте файл Action.cpp и добавьте следующий код для конец файла:
    HRESULT CAction::get_ProgId(BSTR * ProgId)
    {
       // Set the ProgID of the Action interface.
       *ProgId = SysAllocString(L"MessengerSmartTag.Action");
       return S_OK;
    }
    
    HRESULT CAction::get_Name(INT LocaleID, BSTR * Name)
    {
       // Set a short name describing the Action.
       *Name = SysAllocString(L"Messenger Smart Tag");
       return S_OK;
    }
    
    HRESULT CAction::get_Desc(INT LocaleID, BSTR * Desc)
    {
       // Set a long description describing the action.
       *Desc = SysAllocString(L"Provides actions for the Messenger Smart Tag");
       return S_OK;
    }
    
    HRESULT CAction::get_SmartTagCount(INT * Count)
    {
        // Set the number of smart tags this action supports.
        *Count = 1;
        return S_OK;
    }
    
    HRESULT CAction::get_SmartTagName(INT SmartTagID, BSTR * Name)
    {
        // This method is called the same number of times as you
        // return in SmartTagCount. This method sets a unique name
        // for the smart tag.
        *Name = SysAllocString(L"microsoft/messenger#contacts");
        return S_OK;
    }
    
    HRESULT CAction::get_SmartTagCaption(INT SmartTagID, INT LocaleID, BSTR * Caption)
    {
        // This caption is displayed on the menu for the smart tag.
        *Caption = SysAllocString(L"Messenger Smart Tag");
        return S_OK;
    }
    
    HRESULT CAction::get_VerbCount(BSTR SmartTagName, INT * Count)
    {
        // Return the number of verbs we support.
        if (wcsstr(SmartTagName,L"microsoft/messenger#contacts") != 0) {
            *Count = 2;
        }
        return S_OK;
    }
    
    HRESULT CAction::get_VerbID(BSTR SmartTagName, INT VerbIndex, INT * VerbID)
    {
        // Return a unique ID for each verb we support.
        *VerbID = VerbIndex;
        return S_OK;
    }
    
    HRESULT CAction::get_VerbCaptionFromID(INT VerbID, BSTR ApplicationName,
                         INT LocaleID, BSTR * Caption)
    {
        // Set a caption for each verb. This caption is displayed
        // on the Smart Tag menu.
        switch (VerbID) {
          case 1:
            *Caption = SysAllocString(L"Send this contact an Instant Message");
            break;
          case 2:
            *Caption = SysAllocString(L"Send email to this contact");
            break;
          default:
            *Caption = NULL;
            break;
        }
        return S_OK;
    }
    
    HRESULT CAction::get_VerbNameFromID(INT VerbID, BSTR * Name)
    {
        // Set a string name for each verb.
        switch (VerbID) {
          case 1:
            *Name = SysAllocString(L"SendInstantMessage");
            break;
          case 2:
            *Name = SysAllocString(L"SendEmail");
            break;
        }
        return S_OK;
    }
    HRESULT CAction::InvokeVerb(INT VerbID, BSTR ApplicationName,
          IDispatch * Target, ISmartTagProperties * Properties,
          BSTR Text, BSTR Xml)
    {
        // This method is called when a user invokes a verb
        // from the Smart Tag menu.
        Messenger::IMessengerApp2Ptr oMessenger = NULL;
        Messenger::IMsgrObject2Ptr oMsgrObj = NULL;
        Messenger::IMsgrUsersPtr oUsers = NULL;
        Messenger::IMsgrUserPtr oUser = NULL;
        _variant_t v;		
    
        // Create an instance of Instant Messenger.
        oMessenger.CreateInstance("Messenger.MessengerApp");
        oMsgrObj.CreateInstance("Messenger.MsgrObject");
        // Get a list of contacts.
        oUsers = oMsgrObj->GetList(Messenger::MLIST_CONTACT);
        // Loop through all contacts.
        for (long l=0; l<(oUsers->GetCount()-1); l++)
        {
            // Get a specific contact.
            oUser = oUsers->Item(l);
            // Check to see if the contact is the correct one.
    	if (wcscmp(_wcslwr(oUser->GetFriendlyName()),_wcslwr(Text)) == 0)
            {
                switch (VerbID) {
                  case 1:
                    // The user wants to display the Instant Message
                    // box to send the contact a message.
                    v = oUser.GetInterfacePtr();					
                    oMessenger->LaunchIMUI(v);
                    break;
                  case 2:
                    // Shell the "mailto" protocol to start the
                    // user's mail program and create a new message.
                    _bstr_t bstrTemp = "mailto:";
                    bstrTemp += oUser->GetEmailAddress();				                
                    ShellExecute(0,"open",bstrTemp,NULL,NULL,1);
                    break;
                }
            }
        }
        return S_OK;
    }
    					
  11. Откройте файл Stdafx.h и добавьте следующую строку после Считывает строку # include<atlcom.h></atlcom.h>:
    #import "C:\Program Files\Messenger\msmsgs.exe"
    						
    ПРИМЕЧАНИЕ: Измените путь к файлу Msmsgs.exe для административной установки для службы мгновенных сообщений. Расположение по умолчанию для службы мгновенных сообщений — это C:\Program Files\Messenger.
  12. Нажмите клавишу F7, чтобы построить библиотеку DLL.




Действия, чтобы зарегистрировать библиотеку DLL смарт-тега



Перед использованием любой DLL смарт-тег, то необходимо зарегистрировать в системе. Обычный COM-регистрации происходит автоматически при Скомпилируйте проект или вызвать Regsvr32.exe с именем DLL. Необходимо создать Дополнительные параметры реестра, которые не являются частью обычной регистрации COM так для приложений Office можно идентификации DLL как DLL смарт-тега. Чтобы сделать это, выполните следующие действия.
  1. Из командной строки запустите программу Regedit.exe.
  2. В HKEY_CURRENT_USER\Software\Microsoft\Office\Common\Smart Tag\Actions, добавьте новый подраздел с именем MessengerSmartTag.Action.
  3. В HKEY_CURRENT_USER\Software\Microsoft\Office\Common\Smart Tag\Recognizers, добавьте новый подраздел с именем MessengerSmartTag.Recognize.
  4. Закройте редактор реестра.




Действия проверьте библиотеку DLL смарт-тега



Смарт-теги подчиняются той же модели безопасности макросы. Если параметры безопасности приложения установлен высокий, смарт Тег DLL не загружается, если библиотека DLL имеет цифровую подпись (как также в случае с помощью макросов VBA). Дополнительные сведения о цифровой подписи содержатся в разделе «Ссылки» раздел.

Проверка DLL пользовательского распознавателя/действие смарт-тегов в Word выполните следующие действия.
  1. Запуск службы мгновенных сообщений и войти в систему.

    ПРИМЕЧАНИЕ: Смарт-тега необходимо войти в систему на момент Messenger; Если вы не входите в систему для службы мгновенных сообщений, загружает библиотеки DLL, но не распознает все контакты.
  2. Запустите Microsoft Word 2002. На Сервис Выберите пункт Макрос и нажмите Безопасность. Установите уровень безопасности макросов Средний и нажмите ОК. Если ранее было установлено значение безопасности макросов Высокая, запустите Word.
  3. Введите понятное имя контакта в новом документе (для Например, Иван Рогов) и нажмите клавишу ВВОД. Бледные линия отображается под понятное имя для указания того, что он будет распознан как смарт-тег. Поместите указатель мыши Понятное имя и появится кнопка действия смарт-тегов.
  4. Нажмите кнопку Действия смарт-тегов и выберите один из элементов настраиваемое действие из раскрывающегося списка меню. Можно отправить электронной почты или мгновенном сообщении контакт из вашей новой документ.
Аналогичные действия можно использовать для проверки DLL смарт-тега в Excel 2002 г.





Устранение неполадок



Если возникли проблемы, получение пользовательских Смарт-теги для работы, сначала убедитесь в том, что библиотеки DLL смарт-тега загрузить. В Word или Excel на Сервис меню, нажмите кнопку Правильные параметры автоматической, нажмите кнопку Смарт-тег на вкладке и убедитесь, что Текст метки с помощью смарт-тегов установлен и что в списке и выбранной библиотеки DLL смарт-тега. Если смарт-тега не отображается, она может не быть зарегистрированы.

Если выполнение пользовательского класса распознаватель или действие источника проблемы, можно отлаживать DLL смарт-тега, как любой DLL Visual C++. Установка точка останова в конструкторе для класса распознавателя. При нажатии клавиши F5, чтобы Отладка приложения, появится диалоговое окно и запрашивает исполняемый файл для сеанс отладки. Выберите либо Winword.exe -или- Excel.exe. Когда Microsoft Excel или Word запускается и загружает смарт-тега в коде разбиение на точки останова и можно пошагово выполнять код для в режиме отладки.



ССЫЛКИ


Документация для этих интерфейсов, наряду с библиотеки необходимый тип, определяющий их, предоставляемые смарт-тега Пакет средств разработки программного обеспечения (SDK). Если вы еще не следует Установка Smart Tag SDK, перед тем как продолжить шаги по созданию Пример смарт-тега. Smart Tag SDK можно получить от Microsoft Office XP Developer (MOD) компакт-диск, или можно загрузить со следующих Microsoft Developer Network (MSDN) веб-узла:
Пакет разработки программного обеспечения для смарт-тегов
http://www.Microsoft.com/downloads/details.aspx?FamilyId=3d8edcee-0246-43EF-a70f-94c0899f1e8f&displaylang=en



Для получения дополнительных сведений о создании настраиваемый смарт-тег DLL распознаватель/действие, см. файл смарт-тег разработки справки состав Smart Tag SDK.

Дополнительные сведения о цифровых подписей, нажмите кнопку ниже номер статьи базы знаний Майкрософт:
247257 ИНФОРМАЦИЯ: Действия по подписыванию .cab файл
Сведения об использовании CLSID для регистрации Смарт-тег DLL вместо идентификаторы ProgID, обратитесь к следующей статье Microsoft База знаний:
294422 Ошибка: Флаг состояния не обновляется при Включение и отключение смарт-тегов




Свойства

Код статьи: 292596 - Последний отзыв: 21 февраля 2014 г. - Revision: 5.0
Информация в данной статье относится к следующим продуктам.
  • Microsoft Excel 2002 Standard Edition
  • Microsoft Word 2002 Standard Edition
Ключевые слова: 
kbnosurvey kbarchive kbhowto kbhowtomaster kbmt KB292596 KbMtru
Переведено с помощью машинного перевода
ВНИМАНИЕ! Перевод данной статьи был выполнен не человеком, а с помощью программы машинного перевода, разработанной корпорацией Майкрософт. Корпорация Майкрософт предлагает вам статьи, переведенные как людьми, так и средствами машинного перевода, чтобы у вас была возможность ознакомиться со статьями базы знаний KB на родном языке. Однако машинный перевод не всегда идеален. Он может содержать смысловые, синтаксические и грамматические ошибки, подобно тому как иностранец делает ошибки, пытаясь говорить на вашем языке. Корпорация Майкрософт не несет ответственности за неточности, ошибки и возможный ущерб, причиненный в результате неправильного перевода или его использования. Корпорация Майкрософт также часто обновляет средства машинного перевода.
Эта статья на английском языке:292596

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com