1 / 93

Exchange 2000 Programmierschnittstellen Michael Klopstock Exchange System Engineer Microsoft GmbH

. ADO. OLEDB. EFD. CMC. DAPI. Active Messaging. Exchange Server Interfaces. Simple MAPI. Event Scripting. OLE Messaging. ADSI. Outlook Object Model. Routing Objects. CDOEXM. Workflow Engine. Extended MAPI. CDO 1.21. WEBDAV. XML. CDOSYS. AVAPI. Outlook Forms. WEBFORMS. LDAP. Client Extensions. COM-A

dyllis
Télécharger la présentation

Exchange 2000 Programmierschnittstellen Michael Klopstock Exchange System Engineer Microsoft GmbH

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


    2.

    3. Agenda Exchange 5.x Schnittstellen Store Schnittstellen Directory Schnittstellen Exchange 2000 Schnittstellen Neue Store Schnittstellen Neue Directory Schnittstellen Exchange 2000 Future Exchange 2000 SP1 Exchange und .NET

    5. Von ber 100 Firmen und Microsoft definierter Standard, welcher das Zusammenspiel zwischen Komponenten und deren Schnittstellen definiert Smtliche Bestandteile des Exchange Servers kommunizieren u.a. ber MAPI (Store, Gateways, Addressbook, Transport, etc.) und Clients (Exchange und Outlook) OLE/COM basierend Programmierung nur mit C/C++

    6. MAPI ist ein offenes Konzept, nahezu alle Komponenten knnen durch eigene Implementierungen ersetzt oder erweitert werden MAPI definiert, welche Schnittstellen Komponenten im Gesamtsystem haben mssen, die Implementierung selbst ist offen. Realisiert ber COM Interfaces (wie abstrakte Basisklassen)

    7. Extended MAPI

    8. DEMO: Extended MAPI

    9. Nice Feature: Mapi untersttzt Notifications zwischen MAPI Objekten (Store und Addressbook) Bietet Client oder Serveranwendung die Mglichkeit, auf nderungen wie Message angekommen, verschoben, gendert, gelscht, Addressbucheintrag erzeugt, verndert, gelscht etc. zu reagieren Implementiert ber AdviseSinks (IMAPIAdviseSink::OnNotify)

    10.

    11. DEMO: MAPI Event Notification

    12. MAPI Resources MAPI Links: http://msdn.microsoft.com/exchange Exchange Server 2000 Documentation / Messaging API (MAPI) http://peach.ease.lsoft.com/archives/mapi-l.html MAPI Bcher: "Inside MAPI", Les Thaler (http://www.insidemapi.com) Ben Gtter, "Developing Applications for Microsoft Exchange with C++" Nik Okuntsev, "Programming MS Exchange Server", http://www.wrconsulting.com/Software/Publications/Exchange/Contents.htm

    13. Microsoft Exchange Server hat eigene Interfaces (11 St.), zugehrige Methoden und Runtime Functions (317 St.) Exchange Dienste benutzen sowohl MAPI als auch Exchange Server Interfaces, deren Methoden und Runtime functions Exchange Server Interfaces sind hauptschlich fr das Managen des Stores gedacht. (Rules erzeugen, ACLs auf Folder, Synchronisation, ..) Eigene Anwendungen knnen diese Interfaces und Methoden ebenfalls nutzen

    14. IExchangeExportChanges (EDKMDB.H) IExchangeFavorites (EDKMDB.H) IExchangeFolderACLs (ACLCLS.H) IExchangeFolderRules (RULECLS.H) IExchangeImportContentsChanges (EDKMDB.H) IExchangeImportHierarchyChanges (EDKMDB.H) IExchangeManageStore (EDKMDB.H) IExchangeModifyTable (EDKMDB.H) IExchangeRuleAction (EDKMDB.H) IExchangeRuleExt (EXCHCLI.H) IExchangeRuleExtCallback (EXCHCLI.H)

    15. Die Exchange Server Runtime Functions (317 Stck) werden in zwei Gruppen unterteilt: Core functions Dazu gehren Functionen fr Directory Zugriff (DAPI), Proxy Address Generation, Routing Table (SAD_xx), Admin Extension, Tracing, Installation, Rules, MAPI helper und Gateways Non Core functions Dazu gehren Funktionen fr Gateways, Service, Event, Logging, Konfiguration und Konvertierung

    16. Incremental Change Synchronization (ICS) ist Teil der Exchange Server Interfaces Wird verwendet, um nderungen in der Storestruktur und Storeinhalt mitzuprotokollieren, abzufragen und um nderungen zu synchronisieren. Der Exchange Server 5.5 Event Service benutzt dieses Interface. Interfaces des ICS: IExchangeExportChanges IExchangeImportHierarchyChanges IExchangeImportContentsChanges

    17. Incremental Change Synchronisation Interface, um Store Inhalte/Hierachie zu synchronisieren Exchange Private Store (Mailboxen) Exchange Public Store (ffentliche Ordner) nicht verfgbar fr PST oder OST Stores Zugriff via MAPI, sind aber spezifisch fr Microsoft Exchange Beispiel: Platform SDK April99: ICSAGENTWIZARD

    18. Incremental Change Synchronisation Schnittstellen Synchronizer interface IExchangeExportChanges Collector interfaces IExchangeImportHierarchyChanges IExchangeImportContentsChanges Zwei verschiedene Synchronizer fr Hierarchietabelle und Inhalttabelle PR_HIERARCHY_SYNCHRONIZER PR_CONTENTS_SYNCHRONIZER Realisiert ber ein IStream Objekt, welches den aktuellen Status der Synchronisation enthlt Das Format des Synchronisations Status Objekts wird vom Collector/Synchronizer definiert Enthlt Informationen ber alle importierten und exportierten Daten

    19. Ab 5.5 SP3 (scannt nur Attachments) Anti-Viren Hersteller implementiert DLL mit 3 exportierten Funktionen: VirusScanInit VirusScanTerm VirusScanAndClean Infos fr Admin's: Q263949 Ab Exchange 2000 SP1 AVAPI 2.0 scannt alle Properties Anti Virus API

    20. Definiert von der X-Open Application Program Interface Association (XAPIA). 10 simple Funktionen um Email-Funktionalitt in Anwendungen zu integrieren Senden, Empfangen und Adressenauflsung Plattformunabhngig (Win Implementation verwendet MAPI) Sample im Platform SDK: CMC.CLI Common Messaging Calls (CMC)

    21. 12 simple Funktionen um Email-Funktionalitt in Client- Anwendungen zu integrieren Simple MAPI

    22. Ab Exchange 4.0 mitgeliefert (MDISP32.DLL) Nur fr Client-side Messaging Apps Programmierbar mit Visual Basic, Visual Basic for Applications, C, C++, etc Bietet mehr Funktionalitt als Simple MAPI oder CMC Folder Zugriff, mehr Adressbuch Properties, mehr Message Properties, Custom Properties, etc. Wesentlich einfacher zu programmieren als Extended MAPI OLE/Active Messaging (1)

    23. 'Create the Session Object Set objSession = CreateObject("mapi.session") 'Logon using the session object objSession.Logon profileName:=Michael Klopstock" 'Add a new message object to the OutBox Set objMessage = objSession.Outbox.Messages.Add objMessage.subject = "This is a test. objMessage.Text = "This is the message text. 'Add a recipient object to the objMessage.Recipients collection Set objRecipient = objMessage.Recipients.Add 'Set the properties of the recipient object objRecipient.Name = Michael Klopstock objRecipient.Type = mapiTo objRecipient.Resolve 'Send the message objMessage.Send showDialog:=False 'Logoff using the session object objSession.Logoff OLE/Active Messaging (2)

    24. COM Server basierend auf MAPI Nachfolger von Active Messaging Mitgeliefert mit Microsoft Exchange 5.x und Outlook Support fr Server-seitige und Client- seitige Anwendungen Support fr Web Anwendungen Kompatibel mit Active Messaging 1.0 CDO 1.x

    25. CDO 1.21

    26. CDO Object Model 1.x

    28. Anzeige von Kalendereintrgen eines Zeitraums DEMO: CDO 1.21

    29. Exchange Event Service Ab Exchange Version 5.5 Der Exchange Server Event Service registriert sich bei MAPI, um Folder Notifications vom Store zu bekommen Nach Erhalt einer Notification stsst der Event Service den ICS an, um die Art der Vernderung festzustellen Daraus konstruiert der Event Service einen Event, der an die installierten Agents (Default = Event Scripting Agent) weitergereicht wird.

    30. Event Handler Agent: Man kann beim Exchange Server Event Service eigene Agents (siehe Event Scripting Agent) registrieren, um folgende Events abzufangen: Erzeugen einer Nachricht in einem Ordner nderung einer Nachricht in einem Ordner Lschen einer Nachricht in einem Ordner Ein Event Handler Agent ist ein Standard COM Object IExchangeEventHandler Interface muss implementiert werden ExecuteEvent() Funktion muss implementiert werden: Infos in MSDN unter: Platform SDK/Database und Messaging Service/Microsoft Exchange Server/ Exchange Server Programmers Reference/Guide/ Exchange Server Scripting Agent/Advance Topics:Custom Agents Exchange Event Service

    31. Mgliche Events: OnMessageCreated OnMessageChanged OnMessageDeleted OnTimer (Min 15 min) Vorsicht: Asynchrones Processing wenn z.B.: auf Outbox angewandt, dann kann Message schon wieder gelscht sein, bis der Agent darauf zugreift. Single Threaded => Skalierung ! Mgliche Anwendungsbereiche: Periodisches Archivieren von Nachrichten und/oder Attachments Workflow Anwendungen (Post in Public Folder, etc.) Exchange Scripting Agent

    32. Einrichten eines Scripting agents Demo: Exchange Scripting Agent

    33. Basiert auf Exchange Event Service Erweitert Exchange 5.5 Server Scripting: Ziel: Vereinfachung der Erstellung von Routing und Tracking Anwendungen mit Scripting Nicht-Ziel: Volle Workflow Funktionalitt bieten Ab Exchange 5.5 Service Pack 1 Zielgruppe sind "Corporate Developers" und "Solution Providers" Exchange Routing Objects

    34. "Hub and Spoke" Architektur Hub = Nabe = Ordner, Spoke = Speiche = Stationen "Hub" Ordner enthlt: Custom agent (event handler) Exchange routing engine (ExRtEng.dll) Eine Prozessdefinition Routing map Objekt Maps sind eine sequentielle Liste von Aktionen Satz der zur Verfgung stehenden VB Script Funktionen Die gesamte Logik verbleibt auf dem Server Exchange Routing Objects

    35. Exchange Routing Objects

    36. Exchange Routing Objects

    38. Exchange Client Extensions DLLs um die Funktionalitt von Exchange oder Outlook zu erweitern COM-basiert Installation Registry unter HKLM\Software\Microsoft \Exchange\Client\Extension Outlook benutzt ECF Files oder Registry

    39. Exchange Client Extensions Event Extension IExchExtSessionEvents (Neue Message eingetroffen,etc.) IExchExtUserEvents (Selektiertes Item (Listbox, Text, ...)) IExchExtMessageEvents (Message Read, Write, Submit, ...) IExchExtAttachedFileEvents (Attachment open, - Verhalten,.) Command Extensions IExchExtCommands (Menu, Toolbar, Delete Command, ...) IExchExtUserEvents (Selektiertes Item (Listbox, Text, ...)) Propertysheet Extension IExchExtPropertySheets (Eigene Prop-sheets fr Msg, Props) Adanced Criteria Extension IExchExtAdvancedCriteria (Advanced Search Dlg modifizieren) Task and Session Extensions IExchExt (Client Start/Shutdown/Logon/Logoff) Modal and modeless Extension Windows IExchExtModeless ( Eigene Fenster, mit Callback Routine)

    40. CDONTS Standard SMTP Mailer fr Server Anwendungen SMTP send & receive message handling Wird mit IIS 4.0 and Exchange 5.5 installiert Nicht authentiziertes anonymous Versenden von Nachrichten Plain text, HTML, und MHTML Message UUEncoded or Base64 content encoding

    41. DEMO: CDONTS

    42.

    43. Exchange 5.x Directory Schnittstellen

    44. Directory Zugriff Via MAPI address book provider OK fr read-only, Schreibzugriff eingeschrnkt Via LDAP/ADSI Microsoft Exchange 5.0 untersttzt LDAP v2 read Microsoft Exchange 5.5 untersttzt voll read/write LDAP v3 ADSI benutzt den LDAP provider Via Directory access functions (DAPI) Nicht vorhanden in Exchange 2000 !

    45. Directory Zugriff LDAP/ADSI LDAP/ADSI LDAP (Lightweight Directory Access Protocol) bildet das Zugriffsprotokoll auf Objekte im AD Jedes Objekt ist ber einen eindeutigen LDAP-Pfad adressierbar ADSI (Active Directory Service Interface) ist die Abstraktionsschicht fr Zugriffe auf das AD (via LDAP) Anwendungen knnen entweder die LDAP API benutzen oder das Active Directory Service Interface (ADSI) benutzen Vorteil von LDAP: IETF Standard Vorteil von ADSI: Einfacher zu programmieren, Unabhngig vom darunterliegenden Directory Service

    46. LDAP Konventionen Ein LDAP Pfad (URL) besteht aus DC = Domain Context CN = Common Name LDAP://CN=Michael Klopstock,CN=Users,DC=seldom,DC=de Wird von hinten nach vorne gelesen: In der Domne seldom.de im Container Users der Benutzer Michael Klopstock

    47. ADSI Object Modell IADs IADsUser IDispatch IADsContainer IADsPropertyList, IADsPropertyEntry, IADsPropertyValue IADsSecurityDescriptor, IADsAccessControlList, IADsAccessControlEntry

    48. ADSI Bind and Enumerate Dim MyContainer As IADsContainer Bind to container object Set MyContainer = GetObject("LDAP://MyLdapSvr/O=Internet/DC=Redmond") Enumerate child objects for each Object in MyContainer Debug.Print Object.ADsPath Next

    49. DEMO: Directory Zugriff ADSI

    50. Directory Zugriff Via DAPI (Directory API) Proprietre API fr den Zugriff auf das Exchange Directory (10 Funktionen, 6 Callback Funktionen) Wird vorrangig benutzt um Attribute eines Containers (Mailbox, Gateways, etc. ) aus dem Directory zu lesen/schreiben sowie fr Installation und Konfiguration von Gateways Samples im Platform SDK DIRSYNC: Importing and Exporting Mailboxes DSEXPORT: Exporting Directory Objects DSIMPORT: Importing Directory Objects

    51. Directory Zugriff via DAPI (1)

    52. Directory Zugriff via DAPI (2)

    53. Directory Zugriff via DAPI (3)

    54. Directory Zugriff via DAPI (4)

    56.

    57. Neue Exch. 2000 Schnittstellen ADO/OLEDB CDO 3.0 Workflow Engine CDOSYS XML WEBDAV WEBFORMS

    58. Universeller Datenzugriff auf alle Datenbanken via ADO/OLEDB CDO 3.0 zum Erzeugen von ADO Records Neue synchrone Events = neue Workflow Engine CDONTS nur auf Server, CDOSYS Server und Client WEB, WEB, WEB => Einheitliches Transportprotokoll = HTTP (WEBDAV) und XML Neue Exch. 2000 Schnittstellen

    59. Exchange 2000 Architektur

    60. OLEDB Zwei verschiedene Provider: Remote: Client OLE/DB provider ber DAV Outlook CDO Office Lokal: Client OLE/DB provider ber COM Virenscanner Dokumentenmanagement Workflow

    61. ADO 2.5 Object Model

    62. ADO 2.5 Connection Implizit URL an die Open Methode des Record Objekts bergeben Explizit Connection Objekt ffnen Transaktionen Errors collection SQL Select queries

    63. Connection via ADO Implizit: dim Rec as New ADODB.Record strURL = "file://./backofficestorage/" & DomainName & "/" & strLocalPath Rec.Open strURL Explizit: Dim Rec As New ADODB.Record Dim Conn as New ADODB.Connection Dim Stm as ADODB.Stream Conn.Provider = "ExOLEDB.DataSource" Conn.Open "http://server/folder" Rec.Open "http://server/folder/item.txt", Conn Set Stm = Rec.Fields(adDefaultStream).Value

    64. CDO 3.0 Ersetzt und erweitert CDO for Windows 2000 (CDOSYS) Abwrtkompatibel Zugriff auf public und private Stores Erweiterbar mit eigenen Komponenten Aggregation mit ADO

    65. CDO 3.0 Dim conn as New Connection Dim rs as New Recordset Dim msg as New Message fldr = file://./backofficestorage/domain /MBX/user/inbox conn.open fldr,fred,whatever,adRunAsync Set rs = conn.execute Select * from scope(shallow traversal of & fldr & ) where urn:schemas:mailheader:subject = hello msg.DataSource.Open rs(DAV:href),conn msg.Attachments(1).SaveToFile C:\temp\file.doc msg.DataSource.Save

    66. CDO 3.0 Public Sub SimpleMeetingRequest() Dim objAppt As New Appointment Dim objReq As New CalendarMessage objAppt.Subject = "Termin" objAppt.StartTime = "10/4/99 1:00PM" objAppt.EndTime = "10/4/99 2:00PM" objAppt.Attendees.Add ("user2@domain") Set objReq = objAppt.CreateRequest objReq.Message.Send End Sub

    67. CDO 3.0 Dim aPerson as new Person Dim rs as RecordSet Rs.open file://./backofficestorage/dom/MBX/user/contacts rs.MoveFirst While NOT rs.EOF aPerson.DataSource.Open rs.Fields( DAV:HREF) Debug.Print aPerson.FirstName Debug.Print aPerson.LastName Debug.Print aPerson.MailingAddress rs.MoveNext Wend

    68. CDOSYS Objektbibliothek basierend auf SMTP und NNTP Protokoll Standard Wird mit Windows 2000 mitgeliefert CDOSYS = CDO 2.0 Features: Programmatische Auswahl des SMTP Hosts Untersttzt Transport und Protokoll Events Erzeugen von MIME/MHTML Nachrichten ADO/OLEDB Untersttzung (Streams) Dual Interface Mgliche Anwendungen: Bulk Mail Mail basierte Replikation (z.b: Win2000 AD replication) Viren Checker (Mail und News), Auto forward, Admin Alert Spam Mail Erkennung (Sender, Scannen) Senden von Webseiten (Graphic, Links) Anhngen von Text an ausgehende Nachrichten (Transport)

    69. CDOSYS Private Sub SimpleSend_Click() Dim myMailItem As New Message With myMailItem .From = spam@spam.de .To = "mikeklop@microsoft.com .Subject = Here is the MS home page." . CreateMHTMLBody(http://www.microsoft.com,1) .Send End With End Sub

    70. DEMO: CDOSYS I Love you Email Scanner

    71. Exchange 2000 Events Store Events Innerhalb einer Operation (Syncron): open, save, create, delete, move Benachrichtigung einer Operation (Asynchron): save, create, delete, move, timer Systemzustnde Startup/Shutdow Workflow basieren auf Events

    72. DEMO: Exchange 2000 Store Events Abfangen eines Speichervorgangs in einem ffentlichen Ordner und Setzen von Rechten

    73. Workflow Engine Besteht aus 2 Komponenten Workflow Engine Evaluiert Bedingungen Fhrt Aktionen bei Statusbergangen aus Workflow Event Sink Wird angesprungen, wenn nderungen an einem Item in einem Ordner auftreten Benutzt OnSyncSave, OnSyncDelete, OnTimer Store Events Validatiert Benutzer/Author Security Ruft die Workflow Engine

    74. Workflow Engine Workflow Process Definition Process Definition Elemente: AuditTrailProvider CommonScriptURL Action Table Mode (security)

    75. Workflow Engine Workflow Action Table Tabelle von Status-bergngen Bedingungen und Aktionen sind VB Scripts Workflow Engine evaluiert die Bedingungen Workflow Engine fhrt Aktionen aus

    76. Workflow Engine Workflow Engine Security Restricted Mode Aktionen nur mit VB Script, sandboxed, kein CreateObject(), Nur WorkflowSession Objekt kann benutzt werden Was kann im Restricted Mode gemacht werden ? Properties des auslsenden Items modifizieren Mails versenden (WorkflowMessage) ACL auf das auslsende Item schreiben In AuditTrail (Logging) schreiben

    77. Workflow Engine Workflow Engine Security Privileged Mode Aktionen knnen Script oder eigene COM Objekte sein, Script Engine erlaubt CreateObject() Aktionen werden unter einem privilegierten NT account ausgefhrt (in der Exchange Servers Gruppe) Was kann im Privileged Mode gemacht werden ? Alles

    78. DEMO: Workflow Designer

    79. XML in Exchange 2000 Alles wird ber XML definiert Schema Security Registrations Formular und Ansichten Rendering Datentypen

    80. WEBDAV / HTTPDAV Protokoll HTTP 1.0 "read-only" Zugriff auf Dateien (GET Methode) HTTP 1.1 Einfaches Schreiben (PUT und DELETE Methode) HTTP-DAV ist eine Erweiterung des HTTP/1.1 Protokolls (RFC2518) Dateisystem Operationen: MKCOL, COPY, MOVE, LOCK, UNLOCK Manipulation von Properties: PROPFIND, PROPPATCH Suchen auf Resourcen: SEARCH (Die Exchange DAV-Engine implementiert ausserdem Replikation, Notifications, und Versioning)

    81. WEBDAV / HTTPDAV Protokoll Generelle Struktur von WEBDAV Anfragen Methode Beschreibt Methode, die ausgefhrt werden soll Header Beschreibt, wie die Aufgabe zu erledigen ist Body (optional) Definiert die Daten, die in der Methode benutzt werden, oder zustzliche Anweisungen, wie die Methode ausgefhrt werden soll Im Body wird XML verwendet.

    82. WEBDAV / HTTPDAV Protokoll Auslesen der Security eines Dokuments Client sendet: PROPFIND http://myserver/mymessage.doc HTTP/1.1 Host: myserver Content-type: text/xml; charset="utf-8 Content-Length: xxxx <?xml version="1.0" encoding="utf-8" ?> <D:propfind xmlns:D="DAV:"> <D:prop xmlns:E=http:/schemas.microsoft.com/exchange//> <E:ntsecuritydescriptor/> </D:prop> </D:propfind>

    83. DEMO: WEBDAV Setzen von Security auf Nachrichten via WEBDAV und XML verpackt in XMLHTTP Object

    84. CDOEXM CDO fr Exchange Management CDOEXM erweitert CDO und ADSI mit Management Interfaces IMailRecipient Properties: Proxy addresses, Send/Deliver Limits, Forwarding properties Methoden: Mail enable, mail disable IMailBoxStore Properties: Store Quotas, Mailbox location, Delegates Methoden: Create, delete and move mailbox

    85. DEMO: CDOEXM Setzen der Mailbox Quotas einer Exchange Mailbox

    86. Exchange Schema

    87. berblick Exchange 2000 Architektur

    88. Exchange Futures Exchange 2000 SP1 Visual Studio Server Explorer fr Web Storage System Navigation Schema Editor Formular Registrierungen Event Registrierungen Drag and drop von Exchange Ordnern in den Designer Managed OLEDB Provider Remotable Luft im DTC Umfeld (Distributed Transaction)

    89. Demo Visual Studio

    90. Exchange Futures Exchange 2000 und .NET CDO.NET Klassen Managed Provider Remotable Transaktionsfhig In DTC integriert ADO DataSet XmlDataDocument

    91. Zusammenfassung Server Strategie geht Richtung einheitlichen Datenzugriff auf alle Datenbanken via ADO/OLEDB Server Management = Directory Zugriff via ADSI/LDAP Client Strategie geht Richtung XML/HTTP-DAV WebForms rendern HMTL, je nach Fhigkeit des Clients Ziel ist es alle Arten von Devices zu untersttzen

    92. Weitere Infos? Exchange 2000 Resources: msdn.microsoft.com/exchange www.microsoft.com/exchange/trainevents/MEC00.htm msdn.microsoft.com/library/techart/buildingsolutions.htm msdn.microsoft.com/training/seminars/WebDev.asp#exchange Externe Exchange Infos, Tools, etc.: www.exchangestuff.com/ www.slipstick.com/index.htm RFCs: www.gt.ed.net/mailmen/technical/

    93. Weitere Infos? Bcher Programming Microsoft Outlook and Microsoft Exchange, Thomas Rizzo, MSPress Programming WebStore Applications with Microsoft Exchange 2000 Server, Mindy Martin, MSPress msdn quickie www.microsoft.com/germany/msdn/quickie msdn TechTalk-Newsgroup news://msnews.microsoft.com/microsoft.public.de.german.techtalk

    94. Fragen!?

More Related