BUG: Status Flag Is Not Updated When You Enable or Disable Smart Tags (294422)



The information in this article applies to:

  • Microsoft Excel 2002
  • Microsoft Word 2002

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 "Visual Basic Tutorial: Creating a List Recognizer and Action" 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.
  1. Open Registry Editor. To do so, click Start, click Run, and then type regedit in the Run box.
  2. 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.
  3. Copy the value of the CLSID of the action interface that is in the Clsid folder.
  4. Locate the following registry key where changes will be made:

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

  5. Rename the SimpleTerm.SmartTagAction key and replace the value with the CLSID that you copied in step 3.
  6. 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

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.

REFERENCES

For more information about creating custom smart tag recognizer/action DLLs, see the Smart Tag Development Help file that is included with the Microsoft Office Smart Tag SDK. You can obtain the Microsoft Office Smart Tag SDK from the Microsoft Office XP Developer (MOD) CD-ROM, or you can download it from the following Microsoft Developer Network (MSDN) Web site:

Modification Type:MajorLast Reviewed:4/13/2006
Keywords:kbbug KB294422