Microsoft KB Archive/294422

= BUG: Status Flag Is Not Updated When You Enable or Disable Smart Tags =

Article ID: 294422

Article Last Modified on 1/31/2007

-

APPLIES TO


 * Microsoft Excel 2002 Standard Edition
 * Microsoft Word 2002 Standard Edition

-



This article was previously published under Q294422



IMPORTANT: This article contains information about modifying the registry. Before you modify the registry, make sure to back it up and make sure that you understand how to restore the registry if a problem occurs. For information about how to back up, restore, and edit the registry, click the following article number to view the article in the Microsoft Knowledge Base:

256986 Description of the Microsoft Windows Registry



SYMPTOMS
The Status flag of a smart tag is not updated when you modify the enabled/disabled state of a smart tag in Microsoft Office XP. This problem occurs on systems on which the recognizer and action interfaces of a smart tag were registered by using ProgIDs instead of CLSIDs.



RESOLUTION
To resolve the issue, register the action and recognizer interfaces by using the CLSIDs of the interface instead of the ProgIDs.



STATUS
Microsoft has confirmed that this is a bug in the Microsoft products that are listed at the beginning of this article.



MORE INFORMATION
The enabled/disabled state of a smart tag is stored in the Status flag for the recognizer interface. Smart tags are registered in the following location:

HKEY_CURRENT_USER\Software\Microsoft\Office\Common\Smart Tag

You can register smart tag DLLs on the system by using either the ProgID or CLSID for the interface. Currently, Word and Excel use the Status flag to enable or disable the smart tag in the application. If the Status flag does not exist, the smart tag is enabled. To disable the smart tag in Word, set the Status flag at bit 8 (0x08). To disable the smart tag in Excel, set the Status flag at bit 16 (0x10). To disable the smart tag for both programs, combine the values for Excel and Word and set the Status flag to 0x08 + 0x10 = 0x18.

How to Register Smart Tag DLLs by Using CLSIDs instead of ProgIDs
When you build a smart tag DLL where both the ISmartTagAction and ISmartTagRecognizer interfaces are implemented, a ProgID for both interfaces is created in the registry. The ProgID is mapped to a CLSID, which is also contained in the registry.

To register the DLL by using its CLSID instead of its ProgID, follow these steps. The SimpleTerm.dll that is created in the &quot;Visual Basic Tutorial: Creating a List Recognizer and Action&quot; in the Microsoft Office Smart Tag SDK is used as an example.

WARNING: If you use Registry Editor incorrectly, you may cause serious problems that may require you to reinstall your operating system. Microsoft cannot guarantee that you can solve problems that result from using Registry Editor incorrectly. Use Registry Editor at your own risk.

 Open Registry Editor. To do so, click Start, click Run, and then type regedit in the Run box. To find the CLSID for the action interface, open the following registry key:

HKEY_CLASSES_ROOT\SimpleTerm.SmartTagAction\Clsid

In this example, SimpleTerm.SmartTagAction is the ProgID for the action interface. Copy the value of the CLSID of the action interface that is in the Clsid folder. Locate the following registry key where changes will be made:

HKEY_CURRENT_USER\Software\Microsoft\Office\Common\Smart Tag\Actions\SimpleTerm.SmartTagAction

 Rename the SimpleTerm.SmartTagAction key and replace the value with the CLSID that you copied in step 3.</li> Repeat steps 2 through 5 for the Recognizer interface. You can obtain the CLSID for the recognizer interface from the following key:

HKEY_CLASSES_ROOT\SimpleTerm.SmartTagRecognizer\Clsid

The registry changes will be made to the following key:

HKEY_CURRENT_USER\Software\Microsoft\Office\Common\Smart Tag\Recognizers\SimpleTerm.SmartTagRecognizer

</li></ol>

NOTE: Be aware that if the Version Compatibility option on the Component tab of the SimpleTerm Properties submenu in Visual Basic is set to No Compatibility, a new CLSID is generated every time that you recompile. If it is set to Project Compatibility or Binary Compatibility, the CLSID remains the same when you recompile.

<div class="references_section">