290 likes | 448 Views
Office 2000 COM Add-Ins Werkzeuge und Optimierung Tilo Böttcher Technical Specialist Microsoft GmbH tiloboet@microsoft.com. Office 2000 COM Add-Ins Werkzeuge und Optimierung.
E N D
Office 2000 COM Add-InsWerkzeuge und OptimierungTilo BöttcherTechnical SpecialistMicrosoft GmbHtiloboet@microsoft.com
Office 2000 COM Add-InsWerkzeuge und Optimierung • Nach gut zwölf Monaten Office 2000 wollen wir neben einem Überblick über die programmatischen Erweiterungsmöglichkeiten mit COM Add-Ins in den verschiedenen Office 2000 Anwendungen auch Möglichkeiten für das Optimieren von VB/VBA Applikationen aufzeigen.
Office 2000 COM Add-InsWerkzeuge und Optimierung • Was Sie heute erwartetEin Überblick sowie die Klärung einiger Fragen • Erweitern aber wie ? • Sicher (gegen Angriffe und unberechtigte Veränderungen) ? • Robust • Schnell (beim Start, beim Beenden, im Zugriff auf Datenbanken, Informationsaustausch etc.) ? • Wiederverwendbar – modular ?
Agenda • SR1a/OL 2000 Security Patch Overview • COM Add-In Entwicklung – Werkzeuge und Erfahrungen • Überblick: COM Add-Ins mit VB/VBA sowie C++ und ATL entwickeln • Codeoptimierung • Kapselung • Eventhandling • Tipps
Agenda • SR1a/OL 2000 Security Patch Overview • COM Add-In Entwicklung – Werkzeuge und Erfahrungen • Überblick: COM Add-Ins mit VB sowie C++ und ATL entwickeln • Codeoptimierung • Kapselung • Eventhandling • Tipps
SR1a/OL 2000 Security Patch Overview • Allgemeine Fixes • Outlook 2000 Migration von Win 9.x to W2K • Excel 2000 SYLK File Security Update • Excel Programmatic Text Export Update • WORM. Explore.Zip Virus Update • IE 5.0a auf IE 5.1 Update • System Komponenten Updates auf Windows 2000 Stand (incl. MDAC 2.1 auf 2.5, OleAut, Richedit, Windows Installer 1.0 auf 1.1, Web Folders, Jet). • PhotoDraw 2000 Version 2
SR1a/OL 2000 Security Patch Overview • Outlook 2000 Security Patch • Block All Access to the following potentially unsafe attachment types: EXE, COM, URL, LNK, BAT, PIF, INF, REG, CMD, BAS, ISP, INS, CRT, PCD, MST, SCR, HLP, CHM, CPL, VBS, ASF, JS, MDB • Prevent script in One-off forms from executing. (no more prompt) • Always Bring up UI prompt for programmatic access to the Item.Send method in the Outlook Object Model • Always Bring up UI prompt for programmatic access to Address Book Entries, Contact Email Address, and Recipient information in Outlook
SR1a/OL 2000 Security Patch Overview • Was wurde für Developer im SR1a gefixt?Fixes in allen Bereichen (auch MDAC, IE, WEB Server) ...einige Auszüge • Allows multiple multi-threaded (MT) project types. • Forms3 setfocus works with Modal UserForms as expected. • Properly licenses when deploying a DLL with controls on a computer that does not have Office 2000 Developer Edition. • Updates to RichEdit control (RichEd20.dll) for improved text handling and display. • WebCalc retains data and format of cells as expected in scripts, applets, and other programming elements in Internet Explorer 5.
Agenda • SR1a/Security Patch Overview • COM Add-In Entwicklung – Werkzeuge und Erfahrungen • Überblick: COM Add-Ins mit VB/VBA sowie C++ und ATL entwickeln • Codeoptimierung • Kapselung • Eventhandling • Tipps
COM Add-In Entwicklung – Werkzeuge und Erfahrungen • COM Add-Ins mit VBA entwickeln Neues COM Add-In Projekt *.dll DesignerMenüleisten, ButtonsWithEvents, Forms Office VBA IDE Kompilierung/Registrierung(nur *.dll möglich) Setup erstellen (Add-In) Verteilung
COM Add-In Entwicklung – Werkzeuge und Erfahrungen • COM Add-Ins mit VB entwickeln Add-In *.ocx *.Exe *.dll Designer konfigurieren (Impl. IDTExtensibility2) Menüleisten, Buttons WithEvents, Forms Visual Basic 6.0 Kompilierung/Registrierung Setup erstellen (Add-In)Verpackungs- und Weitergabeass. Verteilung
COM Add-In Entwicklung – Werkzeuge und Erfahrungen • COM Add-Ins mit C++ und ATL entwickeln ATL COM Wizard ATL COM Komponente Registry IDTExtensibility2 Objektmodell von Office 2000 und verwendeter App importieren Visual C++ 6.0 Interaktion mit UI Verteilung Menüeinträge Buttons Base Event Klassen Sink Events Map TestKompilierung App Events handlen
Agenda • SR1a/Security Patch Overview • COM Add-In Entwicklung – Werkzeuge und Erfahrungen • Überblick: COM Add-Ins mit VB/VBA sowie C++ und ATL entwickeln • Codeoptimierung • Kapselung • Eventhandling • Tipps
Codeoptimierung • Verwendung von Klassen – Kapselung • Einfach weiterzuverwenden • Einfach zu Projekten hinzuzufügen • Weniger Abhängigkeiten zwischen den Modulen • Macht Task Partitionierung und Spezialisierung möglich • Übersichtlicher: Verbirgt Teile komplexer Prozesse • Vereinfacht Entwicklung und Debugging • Codeverwaltung: Updates an zentraler Stelle nur einmal vonnöten • Mehrfache Instanzeierung möglich
Codeoptimierung • Verwendung von Klassen – Kapselung • Erzeugen einer Klasse • Einfügen eines Klassenmoduls • Sinnvollen Namen verwenden • Initialize und Terminate Events handlen • Eigenschaften und Methoden festlegen • Objekte instanzeieren • Objektvariablen festlegen • New Schlüsselwort verwenden • Zugriff auf Eigenschaften und Methoden Einfachste EigenschaftPublic Variable im Klassenmodul MethodenPublic procedure Sub oder Function Rückgabe von Werten möglich Übergabe von Args möglich Wird I. A. so verwendet
Codeoptimierung 1 `Klassenname: BeispielklasseA Public Sub TuEtwas() Public Function xy() As Long End Sub 2 Dim ObjektA as BeispielklasseA Set ObjektA = New BeispielklasseA .... TuEtwas mit Funktion xy ....... Methoden und Eigenschaften ... Set ObjektA = Nothing
Codeoptimierung • Verwendung von Collections • Manchmal wird eine unbekannte Anzahl an Objekten benötigt ... • Eine Collection kann andere Objekte aufnehmen • Mit NEW kann eine neue Collection angelegt werden • Methoden • Add – Hinzufügen eines Objektes • Item (default) – Referenziert ein Objekt • Remove – Löscht ein Objekt • Count – Eigenschaft • Eigenschaften und Einschränkungen: • Collection löschen durch Neudefinition der Elemente oder Nothing setzen • Public/Global Collections können gefährlich sein • Keine Kontrolle über den Inhalt möglich • Kapselung in Klassen (Collection Class) • Collections bestehen aus impliziten Objektpointern
Codeoptimierung `Ansprechen von Items colItems.Item(1).MethodName colItems.Item(„Bär").MethodName `Durchwandern der Collection For Each objItem in colItems objItem.MethodName Next
Codeoptimierung • Eventhandling • WithEvents -- EventsenkenVBA Schlüsselwort – erlaubt Reaktion auf ObjektEvents (COM)VB/VBA Objektbrowser stellt dies am besten darDeklaration einer Variablen „spiegelt“ das aktuelle ObjektPrivate WithEvents obj As SomeObject • Muß in einem Klassenmodul oder Form vorgenommen werden, erkennbar auch im Editor mit Autoausfüllen-Menüs
Codeoptimierung • Eventhandling -- WithEvents 1 Private Sub Class_Initialize() Set mobjExcelApp = New Excel.Application mobjExcelApp.Visible = True End Sub Klassenmodul 2 Dim mobjExcelEvents As clsExcelEvents Sub InitExcelEvents() Set mobjExcelEvents = New clsExcelEvents End Sub Standardmodul
Codeoptimierung COM Server Private WithEvents objSomething _ As SomeObject Exponiertes Objekt KlassenModul Objektvariable Pointer auf das Objekt Ereignis Prozedur ObjectEvents triggern Prozeduren im Klassen- modul Reguläres Modul Objektvariable Sub objSomething_SomeEvent() End Sub Pointer auf das KlassenModul
Codeoptimierung • Eventhandling -- RaiseEvents • Raising Events falls “eingebaute” Events nicht ausreichen (seit VB 5) • Events im Deklarationsbereich festlegen • RaiseEvent Schlüsselwort im Code nutzen • Event Senken • Applikationen werden benachrichtigt, wenn Events eintreten • WithEvents in Klassenmodulen nutzen • Formular-Modul ist am einfachsten (immer da)
Codeoptimierung 1 Public Event validateRecord(ByVal operation As String, ByRef cancel As Boolean) Deklarationsteil im Klassenmodul 2 RaiseEvent validateRecord("Add", bCancel) etwas später im Code Private Sub dbCtl1_validateRecord(ByVal operation As String, _ cancel As Boolean) Dim msgString As String Dim iIndx As Integer If (operation = "Save") Then If (Len(Text1.Text)<1) Then msgString = "Bitte einen Titel eingeben!" & vbCrLf msgString = msgString & "Speichern wurde abgebrochen" iIndex = MsgBox(msfString, vbCritical, _ "VB DataControl") Cancel = true Else Cancel = false End If End If End Sub 3
Codeoptimierung • 10 Tipps für die Optimierung von VB/VBA COM Add-Ins • timeGetTime wesentlich schneller als die Timer Funktion • vbNullString anstelle von “” zur Initialisierung nutzen • String concatenation: Sehr teuer!! • Like Operator für Zeichenvergleich nutzen • Objekte außerhalb von Schleifen referenzieren
Codeoptimierung • 10 Tipps für die Optimierung von VB/VBA COM Add-Ins (Cont.) • DoEvents kosten Zeit! • Case Statements unter VBA “vorsortieren” • For Each…Next wesentlich schneller als For … Next in einer Collection • Löschen einer Collection am schnellsten durch Pointer auf eine neue Collection setzen • Early Binding vs. Late Binding!
Links und Literatur http://msdn.microsoft.com/officedevhttp://officeupdate.microsoft.comhttp://www.microsoft.com/germany/msdn/techtalkhttp://msdn.microsoft.com/libraryhttp://www.vcdj.comhttp://www.sliptstick.comhttp://www.microeye.comhttp://www.microsoft.com/germany/mspresshttp://www.wrox.com (Professional ATL COM Programming by R. Grimes)
Q & A ... where do you want to go today?