SO WIRD'S GEMACHT: Erstellen einer Smarttag-DLL in ATL für die Verwendung in Office XP

SPRACHE AUSWÄHLEN SPRACHE AUSWÄHLEN
Artikel-ID: 292596 - Produkte anzeigen, auf die sich dieser Artikel bezieht
Dieser Artikel wurde zuvor veröffentlicht unter D292596
Dieser Artikel wurde archiviert. Er wird im vorliegenden Zustand bereitgestellt und nicht mehr aktualisiert.
Dieser Artikel ist eine Übersetzung des folgenden englischsprachigen Artikels der Microsoft Knowledge Base:
292596 HOW TO: Create a Smart Tag DLL in ATL For Use in Office XP
Alles erweitern | Alles schließen

Auf dieser Seite

Zusammenfassung

Unter Smarttags versteht man eine Technologie, die mit Office XP eingeführt wurde und die Benutzern von Office erweiterte Interaktivität bezüglich der Inhalte ihrer Office-Dokumente bietet. Ein Smarttag ist ein Textelement in einem Office-Dokument, dessen herausragendes Merkmal darin besteht, dass bestimmte benutzerdefinierte Aktionen mit ihm verknüpft sind. Als Beispiel für diese speziellen Textelemente könnte ein E-Mail-Name dienen, der in ein Word-Dokument oder eine Excel-Arbeitsmappe eingegeben wird. Wird der E-Mail-Name als Smarttag erkannt, werden dem Benutzer eine oder mehrere in Verbindung mit diesem Textelement potenziell durchführbare Aktionen bereitgestellt. Zu den Aktionen, die mit einem E-Mail-Namen verknüpft sein könnten, zählt beispielsweise die Unterstützung beim Nachschlagen von zusätzlichen Kontaktinformationen oder das Senden einer neuen E-Mail-Nachricht an den betreffenden Kontakt.

Die Funktionalität von Office XP kann erweitert werden, indem eine eigene DLL zur Erkennung und Aktivierung von Smarttags für die Verwendung in Office-Dokumenten entwickelt wird. In diesem Artikel wird das Erstellen einer Smarttag-DLL unter Verwendung einer ATL (Active Template Library) beschrieben. Darüber hinaus werden die in Office XP für die Erkennung und Verwendung der Smarttag-DLL erforderlichen Registrierungseinstellungen erörtert.

HINWEIS: Excel 2002 und Word 2002 sind die einzigen Office XP-Anwendungen, die Smarttags unterstützen. Die in diesem Artikel bereitgestellten Informationen gelten jedoch für die Smarttag-Entwicklung in Verbindung mit allen Anwendungen, die sich der Smarttag-Technologie bedienen möchten. Eine Smarttag-DLL ist eine Standard-COM-DLL, in der zwei spezielle Schnittstellen implementiert wurden: ISmartTagRecognizer und ISmartTagAction. Die ISmartTagRecognizer-Schnittstelle erkennt in einem Dokument eingegebenen Text als Smarttag. Die ISmartTagAction -Schnittstelle führt bei einer Benutzeranforderung für bestimmte Smarttags spezifische Aktionen durch. Diese Schnittstellen müssen nicht in derselben DLL implementiert sein. Sie können eine einzige Erkennungs-DLL und gleichzeitig eine beliebige Anzahl von Aktions-DLLs verwenden, anhand derer sich die verschiedenen Aktionen, die in Verbindung mit einem einzigen Smarttag-Typ durchgeführt werden, erweitern lassen.




Zum Erstellen der Smarttag-DLL in ATL erforderliche Schritte


Anhand der folgenden Schritte wird eine Smarttag-DLL erstellt, die die Kontakte von Microsoft Network (MSN) Instant Messenger erkennt und Benutzer in die Lage versetzt, E-Mail- oder Sofortnachrichten an einen erkannten Kontakt zu senden. Für Instant Messenger ist die Verwendung des folgenden Musters erforderlich. Falls Instant Messenger auf Ihrem Computer nicht installiert ist, können Sie über die folgende MSN-Website eine Kopie des Programms erhalten:
http://messenger.msn.com/

  1. Erstellen Sie in Visual C++ ein neues ATL-COM-AppWizard-Projekt. Benennen Sie das Projekt MessengerSmartTag.
  2. Klicken Sie auf OK, um den ATL-COM-Assistenten zu starten. Stellen Sie sicher, dass im nächsten Dialogfeld das Kontrollkästchen Dynamic Link Library aktiviert ist, und klicken Sie auf Fertig stellen. Klicken Sie auf OK, um das Projekt zu erstellen.
  3. Um die Klasse Erkennung zu erstellen, klicken Sie im Menü Einfügen auf Neues ATL-Objekt. Wählen Sie Einfaches Objekt, und klicken Sie auf Weiter. Geben Sie als Kurzbezeichnung Erkennung ein, und klicken Sie dann auf OK.
  4. Um die Klasse Aktion zu erstellen, folgen Sie den in Schritt 3 beschriebenen Anweisungen, geben jedoch als Kurzbezeichnung Aktion ein.
  5. Öffnen Sie die Klassenansicht, und erweitern Sie die Struktur MessengerSmartTag classes. Klicken Sie mit der rechten Maustaste auf die Klasse CRecognizer, und wählen Sie Schnittstelle implementieren. Klicken Sie auf OK, wenn die Warnmeldung angezeigt wird. Klicken Sie auf Durchsuchen, und wählen Sie Microsoft Smart Tags 1.0-Typbibliothek. Wählen Sie die Schnittstelle ISmartTagRecognizer, und klicken Sie auf OK.

    HINWEIS: Der Standardspeicherort für die Microsoft Smart Tags 1.0-Typbibliothek lautet C:\Programme\Gemeinsame Dateien\Microsoft Shared\Mstag.tlb.
  6. Klicken Sie in der Klassenansicht mit der rechten Maustaste auf die Klasse CAction, und wählen Sie Schnittstelle implementieren. Klicken Sie auf OK, wenn die Warnmeldung angezeigt wird. Klicken Sie auf Durchsuchen, und wählen Sie Microsoft Smart Tags 1.0-Typbibliothek. Wählen Sie die Schnittstelle ISmartTagAction, und klicken Sie auf OK.
  7. Öffnen Sie die Datei Recognizer.h, und ersetzen Sie die Klasseninhalte durch den folgenden Code:
    ///////////////////////////////////////////////////////////////////////////// 
    // CRecognizer
    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:
    
        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)
    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;
    };
  8. Öffnen Sie die Datei Recognizer.cpp, und fügen Sie am Ende der Datei den folgenden Code an:
    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. Öffnen Sie die Datei Action.h, und ersetzen Sie die Klasseninhalte durch den folgenden Code:
    ///////////////////////////////////////////////////////////////////////////// 
    // CAction
    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:
       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)
    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);
    };
  10. Öffnen Sie die Datei Action.cpp, und fügen Sie am Ende der Datei den folgenden Code an:
    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. Öffnen Sie die Datei Stdafx.h, und fügen Sie hinter der Zeile #include <atlcom.h> die folgende Zeile an:
    #import "C:\Program Files\Messenger\msmsgs.exe"
    HINWEIS: Ändern Sie den Pfad der Datei Msmsgs.exe in den Installationsordner von Instant Messenger. Der Standardspeicherort für Instant Messenger ist C:\Programme\Messenger.
  12. Drücken Sie F7, um die DLL zu erstellen.




Zum Registrieren der Smarttag-DLL erforderliche Schritte



Um Smarttag-DLLs verwenden zu können, müssen diese im System registriert werden. Die Standard-COM-Registrierung wird beim Kompilieren des Projektes oder beim Aufrufen der Datei Regsvr32.exe mit dem DLL-Namen als Parameter automatisch durchgeführt. Es müssen zusätzliche Registrierungseinträge erstellt werden, die nicht Bestandteil der Standard-COM-Registrierung sind, damit Office-Anwendungen die betreffende DLL als Smarttag-DLL erkennen können. Führen Sie dazu die folgenden Schritte durch:
  1. Starten Sie Regedit.exe über eine Befehlszeile.
  2. Fügen Sie unter HKEY_CURRENT_USER\Software\Microsoft\Office\Common\Smart Tag\Actions einen neuen Teilschlüssel mit der Bezeichnung "MessengerSmartTag.Action" hinzu.
  3. Fügen Sie unter HKEY_CURRENT_USER\Software\Microsoft\Office\Common\Smart Tag\Recognize einen neuen Teilschlüssel mit der Bezeichnung "MessengerSmartTag.Recognize" hinzu.
  4. Schließen Sie den Registrierungs-Editor.




Zum Testen der Smarttag-DLL erforderliche Schritte



Smarttags unterliegen demselben Sicherheitsmodell wie Makros. Sind die Sicherheitseinstellungen der betreffenden Anwendung auf "Hoch" festgelegt, werden - wie dies der Fall bei VBA-Makros ist - nur digital signierte Smarttag-DLLs geladen. Weitere Informationen zu digitalen Signaturen finden Sie im Abschnitt "Verweise".

Zum Testen der benutzerdefinierten DLLs zur Erkennung und Aktivierung von Smarttags in Word befolgen Sie die folgenden Schritte:
  1. Starten Sie den Instant Messenger, und melden Sie sich an.

    HINWEIS: Für Beispiel-Smarttags ist es erforderlich, dass Sie beim Instant Messenger angemeldet sind. Wenn Sie nicht am Instant Messenger angemeldet sind, wird die DLL geladen, ohne dass Kontakte erkannt werden.
  2. Starten Sie Word 2002. Zeigen Sie im Menü Extras auf Makros, und klicken Sie auf Sicherheit. Legen Sie die Makrosicherheit auf Mittel fest, und klicken Sie auf OK. Wurde die Einstellung für die Makrosicherheit zuvor auf Hoch festgelegt, starten Sie Word neu.
  3. Geben Sie in einem neuen Dokument den Anzeigenamen für einen Kontakt ein, und drücken Sie dann die EINGABETASTE. Der Anzeigename wird dünn unterstrichen angezeigt, wodurch angegeben wird, dass der Anzeigename als Smarttag erkannt wurde. Bewegen Sie den Mauszeiger über den Anzeigenamen. Die Schaltfläche Smarttag-Aktionen wird daraufhin angezeigt.
  4. Klicken Sie auf Smarttag-Aktionen, und wählen Sie aus dem Dropdownmenü eine der benutzerdefinierten Aktionen aus. Sie können an den Kontakt in Ihrem neuen Dokument E-Mail- oder Sofortnachrichten senden.
Zum Testen der Smarttag-DLL in Excel 2002 können vergleichbare Schritte angewendet werden.





Problembehandlung



Treten bei der Verwendung der benutzerdefinierten Smarttags Probleme auf, stellen Sie zunächst sicher, dass die benutzerdefinierte Smarttag-DLL geladen wurde. Klicken Sie in Word oder Excel im Menü Extras auf AutoKorrektur-Optionen, klicken Sie auf die Registerkarte Smart Tag, und vergewissern Sie sich, dass das Kontrollkästchen Text mit Smarttags versehen aktiviert ist und die gewünschte Smarttag-DLL darüber hinaus aufgelistet und ausgewählt ist. Ist das gewünschte Smarttag nicht aufgelistet, ist es möglicherweise nicht ordnungsgemäß registriert.

Liegt die Ursache des Problems bei der Ausführung der benutzerdefinierten Erkennungs- oder Aktionsklasse, können Sie eine Smarttag-DLL auf dieselbe Weise wie eine Visual C++-DLL debuggen. Legen Sie einen Haltepunkt im Konstruktor der Erkennungsklasse fest. Wenn Sie zum Debuggen der Anwendung F5 drücken, wird ein Dialogfeld angezeigt, in dem Sie dazu aufgefordert werden, eine ausführbare Datei für die Debugsitzung anzugeben. Wählen Sie die Datei Winword.exe oder Excel.exe. Wird das Smarttag in Excel oder in Word gestartet und geladen, wird die Ausführung des Codes daraufhin am Haltepunkt unterbrochen, so dass Sie mit dem schrittweisen Debuggen des Codes beginnen können.



VERWEISE


Eine Dokumentation zu diesen Schnittstellen einschließlich der erforderlichen Klassenbibliothek, über die die Schnittstellen definiert werden, wird im Smarttag-SDK zur Verfügung gestellt. Um die zum Erstellen des Smarttag-Beispielcodes erforderlichen Schritte durchführen zu können, sollten Sie das Smarttag-SDK installieren, falls dies nicht bereits der Fall ist. Sie können das Smarttag-SDK über die Microsoft Office XP Developer (MOD)-CD installieren oder über die folgende MSDN-Website downloaden:
Smarttag-SDK
http://msdn.microsoft.com/code/default.asp?url=/code/sample.asp?url=/msdn-files/027/001/652/msdncompositedoc.xml



Weitere Informationen zum Erstellen von benutzerdefinierten Smarttag-Erkennungs-/Aktions-DLLs finden Sie in der Hilfedatei zu Smarttag für Entwickler, die im Lieferumfang des Smarttag-SDKs enthalten ist.

Zusätzliche Informationen zu digitalen Signaturen erhalten Sie, indem Sie auf die Artikelnummer unten klicken, um den betreffenden Artikel in der Microsoft Knowledge Base anzuzeigen:
247257 INFO: Steps for Signing a .cab File
Informationen zur Verwendung von CLSIDs zum Registrieren der Smarttag-DLL anstelle einer ProgID finden Sie im folgenden Artikel in der Microsoft Knowledge Base:
294422 BUG: Status Flag Is Not Updated When You Enable or Disable Smart Tags






Bitte beachten Sie: Bei diesem Artikel handelt es sich um eine Übersetzung aus dem Englischen. Es ist möglich, dass nachträgliche Änderungen bzw. Ergänzungen im englischen Originalartikel in dieser Übersetzung nicht berücksichtigt sind. Die in diesem Artikel enthaltenen Informationen basieren auf der/den englischsprachigen Produktversion(en). Die Richtigkeit dieser Informationen in Zusammenhang mit anderssprachigen Produktversionen wurde im Rahmen dieser Übersetzung nicht getestet. Microsoft stellt diese Informationen ohne Gewähr für Richtigkeit bzw. Funktionalität zur Verfügung und übernimmt auch keine Gewährleistung bezüglich der Vollständigkeit oder Richtigkeit der Übersetzung.

Eigenschaften

Artikel-ID: 292596 - Geändert am: Montag, 24. Februar 2014 - Version: 1.3
Die Informationen in diesem Artikel beziehen sich auf:
  • Microsoft Excel 2002 Standard Edition
  • Microsoft Word 2002 Standard Edition
  • Microsoft Visual C++ 6.0 Professional Edition
Keywords: 
kbnosurvey kbarchive kbatl kbexcel kbgrpdso kbhowto kbhowtomaster kbword KB292596
Microsoft stellt Ihnen die in der Knowledge Base angebotenen Artikel und Informationen als Service-Leistung zur Verfügung. Microsoft übernimmt keinerlei Gewährleistung dafür, dass die angebotenen Artikel und Informationen auch in Ihrer Einsatzumgebung die erwünschten Ergebnisse erzielen. Die Entscheidung darüber, ob und in welcher Form Sie die angebotenen Artikel und Informationen nutzen, liegt daher allein bei Ihnen. Mit Ausnahme der gesetzlichen Haftung für Vorsatz ist jede Haftung von Microsoft im Zusammenhang mit Ihrer Nutzung dieser Artikel oder Informationen ausgeschlossen.

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