War diese Seite hilfreich?
Ihr Feedback ist uns wichtig. Teilen Sie uns Ihre Meinung mit.
Weiteres Feedback?
1500 verbleibende Zeichen
Exportieren (0) Drucken
Alle erweitern
Erweitern Minimieren

Smarte Skripts

Veröffentlicht: 20. Jul 2001 | Aktualisiert : 18. Jun 2004

Von Andrew Clinick

Microsoft Office XP verfügt über ein neues, leistungsstarkes Feature. Es handelt sich um Smarttags, mit deren Hilfe Office-Anwendungen und Microsoft Internet Explorer die eingegebenen und angezeigten Informationen analysieren und Verknüpfungen zu relevanten Informationen zum Inhalt bereitstellen können. Dies ist beim Schreiben von Berichten oder Erstellen von Tabellenkalkulationen sehr nützlich, wenn Sie Informationen schnell nachschlagen möchten. Ein gutes Beispiel für die Verwendung von Smarttags unter Office sind E-Mail-Adressen. Wenn Sie den Namen einer Person eingeben, schlägt Office den Namen in der Kontaktdatenbank von Outlook nach, und wenn die Person vorhanden ist, können Sie mit Hilfe des Smarttags auf den Benutzernamen klicken und eine Option aus dem Kontextmenü wählen. Auf diese Weise können Sie dieser Person eine E-Mail senden, eine Besprechung organisieren, die Informationen zur Kontaktperson anzeigen oder sogar die Adresse des Benutzers einfügen. Die Entwickler von Smarttags haben auch daran gedacht, ein "Smart Tag SDK" bereitzustellen, weil ihnen klar war, dass Entwickler über die Möglichkeit verfügen müssen, neue Smarttags zu schreiben. In diesem Artikel stelle ich das Smart Tag SDK vor und erläutere, wie es bei der Skripterstellung verwendet werden kann.

Funktionsweise von Smarttags
Es ist wichtig, die Funktionsweise des Systems zu kennen, um zu verstehen, wie Smarttags funktionieren. Smarttags können zwei Schritte ausführen: 1.) Inhalt erkennen, der an sie gesandt wird, und 2.) basierend auf dem Inhalt Aktionen ausführen. Die Implementierung des "Erkennungsmoduls" und der Aktionen erfolgt durch eine Reihe von COM-Objekten. Microsoft Office enthält standardmäßig mehrere Erkennungsmodule und Aktionen, z.B. das Erkennungsmodul für Namen und die dazugehörige Aktion, die ich in meinem vorherigen Beispiel verwendet habe. Wenn Word geladen wird, prüft das Programm, welches Erkennungsmodul und welche Aktions-Add-Ins im System vorhanden sind, und stellt sicher, dass sie geladen sind. Wenn Sie mit der Texteingabe beginnen, wird der gesamte Kontext in die Add-Ins weitergeleitet. Das Smart Tag SDK (verfügbar unter Microsoft Office XP Smart Tag SDK [in Englisch]) verfügt über ein gutes Architekturschaubild, auf dem die Funktionsweise dargestellt ist:


Bild01


Abbildung 1. Architektur der Smarttagfunktionalität

Die Komponenten, die auf Aktionen und die Erkennung reagieren, müssen eine bestimmte COM-Schnittstelle implementieren, bei der es so scheint, als ob die Verwendung von Skript nicht möglich wäre. Smarttags unterstützen glücklicherweise jedoch einen Mechanismus zum Erstellen von Smarttags über XML, worüber dann eine Verknüpfung zu einem Server hergestellt werden kann. Mit dieser Verknüpfung können Sie eine Verbindung zu Skript herstellen, das auf einer ASP-Seite ausgeführt wird und einen Großteil der notwendigen Schritte übernehmen kann.

Smarttaglisten
Smarttaglisten bieten einen einfachen XML-basierten Mechanismus zum Definieren von bestimmten Termen, die Smarttags erkennen können, ohne dass erst umständlich eine gesamte COM-Komponente implementiert werden muss. Sie müssen lediglich eine Liste der Terme im XML-Format erstellen und dann eine Liste der auszuführenden Aktionen anlegen, die bei den jeweiligen Termen der Liste erfolgen sollen. Das Smarttaglisten-Plug-In lädt die XML-Definition immer dann, wenn auch Microsoft Word, Microsoft Excel oder IE geladen werden, und stellt sicher, dass ein Menü mit allen Aktionen angezeigt wird, wenn in einem Dokument ein Term aus der Liste gefunden wird. Das Gute daran ist, dass die Aktionen Verknüpfungen zu ASP-Seiten mit Kontext zum Term aufweisen können.

Ich habe für scripthappens.com ein Microsoft VBScript-Syntaxhilfsprogramm erstellt, um zu verdeutlichen, wie Sie dies in Skript einbauen können. Die Liste der Terme enthält Schlüsselwörter, Funktionen und Anweisungen für VBScript, und den Benutzern werden immer zwei Aktionen angeboten, wenn sie Smarttags in Word, Excel oder IE verwenden: "Hilfe von Scripthappens.com" und "Scripthappens.com ist cool". Die erste Aktion führt auf eine ASP-Seite, getref.asp, auf der alle relevanten Informationen zum jeweiligen VBScript-Schlüsselwort und alle von scripthappens.com bereitgestellten Beispiele angezeigt werden. Die zweite Aktion ist reine Werbung für scripthappens.com.

So implementieren Sie eine Liste
Die Smarttag-Listenkomponente bezieht alle Informationen aus einer XML-Datei, und zwar msotl.xml. Diese Datei enthält die Liste der Terme, die definierten Aktionen und einige Namensinformationen zum Smarttag selbst. Zuerst müssen Sie den Namen der Smarttagliste festlegen, also in diesem Fall "Skriptterme", und dann geben Sie eine Beschreibung des Inhalts der Smarttagliste ein. Als Nächstes legen Sie die Terme fest, die Sie in der Smarttagliste verwenden möchten. Die XML-Definition verfügt über ein termlist-Element, das Sie mit einer Liste der Terme füllen (durch Kommas getrennt):


<FL:terms> <FL:termlist>do while, setLocale, getLocale, getref, Class, function, sub, for each</FL:termlist> </FL:terms>

In diesem Beispiel habe ich der Einfachheit halber nur einige VBScript-Terme verwendet.
Wenn Sie alle Terme definiert haben, müssen Sie nur noch die Aktionen einrichten, die angezeigt werden, wenn Benutzer auf das Smarttag klicken. Die List-XML-Definition enthält ein

 <FL:actions>

-Element, das alle Aktionen umfasst, die angezeigt werden. Jede Aktion verfügt über eine Beschriftung und einen URL. Beides sollte aufgerufen werden, wenn der Benutzer den Menübefehl wählt. In diesem Beispiel habe ich die Aktion gethelp und eine überflüssige Werbung für scripthappens.com hinzugefügt. Die Aktion gethelp weist einen URL auf die Seite getref.asp auf, die den Namen des Terms als Argument ansieht. Dies ist auf einfache Weise zu erreichen, da

{TEXT}

durch den Term ersetzt wird, der zum Aufrufen des Smarttags geführt hat.
XML zum Definieren von Aktionen:

  <FL:actions> 
      <FL:action id="Lookupdef"> 
      <FL:caption>&amp;Hilfe von Scripthappens.com</FL:caption>  
      <FL:url>http://www.scripthappens.com/getref.asp?String={TEXT}</FL:url>  
      </FL:action>  
     <FL:action id="CompanyInfo"> 
      <FL:caption>&amp;Scripthappens.com ist cool</FL:caption>  
      <FL:url>http://www.scripthappens.com</FL:url>  
      </FL:action> 
  </FL:actions> 
Bild02


Abbildung 2. Smarttags in Word

Wenn alle Informationen in die Datei msotl.xml eingegeben wurden, muss sie auf dem Computer nur noch am richtigen Speicherort abgelegt werden. Wenn die Liste allen Benutzern zugänglich gemacht werden soll, sollte sie unter Programme\Gemeinsame Dateien\Microsoft Shared\Smart Tags\Lists abgelegt werden. Ist sie für einen bestimmten Benutzer gedacht, lautet der Speicherort folgendermaßen: \Dokumente und Einstellungen\Benutzername\Anwendungsdaten\Microsoft\Smart Tag Lists. Dadurch wird sichergestellt, dass der Benutzer Roamingzugriff auf die Liste hat.
Beispiel "msotl.xml":

<FL:smarttaglist xmlns:FL="urn:schemas-microsoft-com:smarttags:list"> 
  <FL:name>Skriptterme</FL:name>  
  <FL:lcid>1033</FL:lcid>  
  <FL:description>Liste der Terme</FL:description>  
  <FL:moreinfourl>http://www.scripthappens.com/smarttags</FL:moreinfourl>  
  <FL:updateable>true</FL:updateable>  
  <FL:autoupdate>true</FL:autoupdate>  
  <FL:lastcheckpoint>100</FL:lastcheckpoint>  
  <FL:lastupdate>5123942</FL:lastupdate>  
    <FL:updateurl>http://www.scripthappens.com/smarttags/listupdate.xml</FL:updateurl>  
  <FL:updatefrequency>20160</FL:updatefrequency>  
  <FL:smarttag type="urn:schemas-scripthappens-com:script#terms"> 
  <FL:caption>Skript-Hilfe</FL:caption>  
  <FL:terms> 
  <FL:termlist>do while, setLocale, getLocale, getref, Class, function,  
  sub, for each</FL:termlist> 
  </FL:terms> 
  <FL:actions> 
      <FL:action id="Lookupdef"> 
      <FL:caption>&amp;Hilfe von Scripthappens.com</FL:caption>  
      <FL:url>http://www.scripthappens.com/getref.asp?String={TEXT}</FL:url>  
      </FL:action>  
     <FL:action id="CompanyInfo"> 
      <FL:caption>&amp;Scripthappens.com ist cool</FL:caption>  
      <FL:url>http://www.scripthappens.com</FL:url>  
      </FL:action> 
  </FL:actions> 
  </FL:smarttag> 
  </FL:smarttaglist>  

Implementieren der ASP-Hilfeseite
Ich möchte das Beispiel in diesem Artikel einfach halten und habe daher eine rudimentäre Hilfeseite implementiert, auf der nur die jeweilige Dokumentation für den Term angezeigt wird, für den die Hilfe angefordert wurde. Im Idealfall würde die Hilfe in einer Datenbank gespeichert sein, und die ASP-Seite würde die Datenbank basierend auf dem gewünschten Term abfragen. Bei diesem Beispiel habe ich geschummelt, indem ich die Dokumentation in Dateien eines Unterordners gespeichert habe und jeweils nur die relevante Datei für den gewünschten Term lade. Ich weiß, das ist zwar nicht sehr professionell, aber die Seite bleibt dadurch überschaubar.

<% 
dim strTerm 
strTerm = server.mappath("\terminfo") & ("\") & Request.QueryString("string") & ".htm" 
set myFSO = CreateObject("scripting.FileSystemObject") 
Set ts = myFSO.OpenTextFile(strTerm) 
response.write ts.readall 
%> 

Der wichtigste Vorteil dieses Beispiels liegt darin, dass auf einfache Weise Verknüpfungen zwischen Office-Smarttags und auf dem Server ausgeführten Skripts hergestellt werden können. Die hier verwendeten Skriptterme sind vielleicht nicht das optimale Beispiel, aber es wird klar, wie Sie Ihre Informationen in Office einbinden können. Ich möchte Sie dazu ermutigen, das XML-basierte Smarttagfeature auszuprobieren und mit Skript auf einem Server zu verbinden.
Wie immer freuen wir uns auf Ihr Feedback und Ihre Ideen, um die Skripterstellung einfacher zu machen. Sie erreichen uns unter msscript@microsoft.com und über die Newsgroups unter msnews.microsoft.com.

Links zu verwandten Themen

Download

Microsoft Office XP Smart Tag SDK


Anzeigen:
© 2015 Microsoft