Post on 05-Apr-2015
Wizards & Wizards & Builders GmbH Builders GmbH
Erstellen von OLE-ServernErstellen von OLE-Servern
Design von OLE-Server-Design von OLE-Server-Anwendungen unterAnwendungen unter
Microsoft Visual FoxProMicrosoft Visual FoxPro
Wizards & Wizards & Builders GmbH Builders GmbH
Diese Schulung dient der Einführung in die Erstellung
von eigenen OLE-Server-Anwendungen mit
Microsoft Visual FoxPro
Wizards & Wizards & Builders GmbH Builders GmbH
ThemenübersichtThemenübersicht
Einführung in OLEEinführung in OLEAnforderungen, OLE-Bereiche, Anforderungen, OLE-Bereiche,
ErläuterungenErläuterungen Einführung in COMEinführung in COM
COM-Definition, VorteileCOM-Definition, Vorteile Erstellen von eigenen OLE-ServernErstellen von eigenen OLE-Servern
VFP-Befehle und HinweiseVFP-Befehle und Hinweise BeispielanwendungBeispielanwendung
Applikationsklasse, Applikationsklasse, Administrationsklasse, Administrationsklasse, GeschäftsobjektklasseGeschäftsobjektklasse
Wizards & Wizards & Builders GmbH Builders GmbH
OLE-TeilbereicheOLE-Teilbereiche
Darstellung des Darstellung des Leistungsumfangs von Leistungsumfangs von
Microsoft - OLE 2.0Microsoft - OLE 2.0
Wizards & Wizards & Builders GmbH Builders GmbH
AnforderungenAnforderungen
KundenforderungenKundenforderungen neue Funktionalitätenneue Funktionalitäten Integration von AnwendungenIntegration von Anwendungen Konsistenz zwischen versch. App.Konsistenz zwischen versch. App.
Technische ForderungenTechnische Forderungen AnwendungsarchitekturAnwendungsarchitektur PerformancePerformance
Wizards & Wizards & Builders GmbH Builders GmbH
OLE-Basis-BereicheOLE-Basis-Bereiche
Component Object Model Component Object Model (COM)(COM)
Compound FilesCompound Files Monikers (Objekt-Referenzen)Monikers (Objekt-Referenzen) Uniform Data TransferUniform Data Transfer OLE Drag & DropOLE Drag & Drop OLE AutomationOLE Automation
Wizards & Wizards & Builders GmbH Builders GmbH
OLE-IntegrationsbereicheOLE-Integrationsbereiche
OLE EmbeddingOLE Embedding OLE LinkingOLE Linking
Moniker für DatenbezugMoniker für Datenbezug Daten ggf. in embedded objectDaten ggf. in embedded object
In-Place-ActivationIn-Place-Activation Embedded/Linked statt in eigenem Embedded/Linked statt in eigenem
Fenster direkt im Container bearbeitenFenster direkt im Container bearbeiten Tools im Document ContextTools im Document Context
Wizards & Wizards & Builders GmbH Builders GmbH
Erläuterungen 1/3Erläuterungen 1/3
Compound FileCompound File Root-Store, Sub-Store (Stream,Sub-Root-Store, Sub-Store (Stream,Sub-
Store)Store) Transaktion, Garbage-CollectionTransaktion, Garbage-Collection
Uniform Data TransferUniform Data Transfer Basis für Clipboard, Drag&Drop, Daten-Basis für Clipboard, Drag&Drop, Daten-
transfer in OLE-Documentstransfer in OLE-Documents
OLE-Drag & DropOLE-Drag & Drop Ctrl Move->Copy, CtrlShift=Link, EscCtrl Move->Copy, CtrlShift=Link, Esc
Wizards & Wizards & Builders GmbH Builders GmbH
Erläuterungen 2/3Erläuterungen 2/3
OLE-AutomationOLE-Automation Publikation von Eigenschaften (mit Typ) und Publikation von Eigenschaften (mit Typ) und
Methoden (mit Paramtern) über eine Type Methoden (mit Paramtern) über eine Type LibraryLibrary
Angesteuert von Programmiersprache oder Angesteuert von Programmiersprache oder Makro / Makro-Sprache (VBA/Script)Makro / Makro-Sprache (VBA/Script)
OLE-DocumentsOLE-Documents Container (Präsentationsfläche)Container (Präsentationsfläche) Server (Datenangebot aller Art)Server (Datenangebot aller Art) Cache (Abbild falls Server fehlt)Cache (Abbild falls Server fehlt)
Wizards & Wizards & Builders GmbH Builders GmbH
Erläuterungen 3/3Erläuterungen 3/3
Embedding & LinkingEmbedding & Linking Embedding ruft Server für BearbeitungEmbedding ruft Server für Bearbeitung Linking speichert nur MonikerLinking speichert nur Moniker Emulation nutzt andere ServerEmulation nutzt andere Server Conversion wandelt Servertyp umConversion wandelt Servertyp um
In-Place-ActivationIn-Place-Activation siehe Embeddingsiehe Embedding Definition von Toolbars/Fenster u.ä.Definition von Toolbars/Fenster u.ä.
Wizards & Wizards & Builders GmbH Builders GmbH
Component Object ModelComponent Object Model
Die wichtigsten Die wichtigsten Grundlagen von Grundlagen von
Microsoft COMMicrosoft COM
Wizards & Wizards & Builders GmbH Builders GmbH
AllgemeinAllgemein
Binärer Standard für InterfaceBinärer Standard für Interface Interface ist eine PointerlisteInterface ist eine Pointerliste enthält Zeiger auf Funktionenenthält Zeiger auf Funktionen Beliebig viele Interfaces erlaubtBeliebig viele Interfaces erlaubt Basis-Interface: IunknownBasis-Interface: Iunknown
AddrefAddref ReleaseRelease QueryInterfaceQueryInterface
Wizards & Wizards & Builders GmbH Builders GmbH
FunktionalitätFunktionalität
Mit Hilfe der CLSID leistet COM:Mit Hilfe der CLSID leistet COM: Suchen in RegistrySuchen in Registry Ggf. Verbindungsherstellung RemoteGgf. Verbindungsherstellung Remote Laden und Starten des ServersLaden und Starten des Servers Aufruf zur ObjekterzeugungAufruf zur Objekterzeugung Rückgabe ObjektreferenzRückgabe Objektreferenz Abwicklung der KommunikationAbwicklung der Kommunikation Ggf. Beenden des ServersGgf. Beenden des Servers
Wizards & Wizards & Builders GmbH Builders GmbH
AnforderungenAnforderungen
Anforderungen an OLE-Server:Anforderungen an OLE-Server: IClassFactory-InterfaceIClassFactory-Interface DLL: DllGetClassObject bzw.DLL: DllGetClassObject bzw.
EXE: RegisterClassObjectEXE: RegisterClassObject DLL: DllCanUnloadNow bzw.DLL: DllCanUnloadNow bzw.
EXE: RevokeClassObjectEXE: RevokeClassObject
Wizards & Wizards & Builders GmbH Builders GmbH
VorteileVorteile
PfadunabhängigkeitPfadunabhängigkeit mehrere Provider für Servicemehrere Provider für Service Eindeutige Kennung (GUIDs)Eindeutige Kennung (GUIDs) Einheitliches APIEinheitliches API Einheitlich Lokal und RemoteEinheitlich Lokal und Remote Verschiedene InterfacesVerschiedene Interfaces Mehrfachnutzung von InstanzenMehrfachnutzung von Instanzen VersionierungVersionierung
Wizards & Wizards & Builders GmbH Builders GmbH
Erstellen von OLE-ServernErstellen von OLE-Servern
Hinweise zur Erstellung Hinweise zur Erstellung von von
OLE-Servern mit OLE-Servern mit Microsoft Visual FoxProMicrosoft Visual FoxPro
Wizards & Wizards & Builders GmbH Builders GmbH
Verbesserungen in VFP Verbesserungen in VFP 6.06.0
Apartment Model ThreadingApartment Model Threading Disablen BenutzeroberflächeDisablen Benutzeroberfläche Dual-Interface-SupportDual-Interface-Support Multiple Runtime-BibliothekenMultiple Runtime-Bibliotheken Type-LibrariesType-Libraries Exception HandlingException Handling Array-Handling / ÜbergabeArray-Handling / Übergabe
Wizards & Wizards & Builders GmbH Builders GmbH
Befehle in VFP 6.0Befehle in VFP 6.0
ComArray()ComArray() ComClassInfo()ComClassInfo() Sys(3004), Sys(3005)Sys(3004), Sys(3005) ComReturnError()ComReturnError() Sys(2334) Sys(2334) (Server Invocation Mode)(Server Invocation Mode)
Sys(2335) Sys(2335) (Unattended Server Mode)(Unattended Server Mode)
Wizards & Wizards & Builders GmbH Builders GmbH
Eigenschaften in VFP 6.0Eigenschaften in VFP 6.0
_VFP.Startmode_VFP.Startmode Application.ServernameApplication.Servername „„Application“ nicht mehr nach Application“ nicht mehr nach
außen sichtbar - aber selbst außen sichtbar - aber selbst definierbardefinierbar
außerdem:außerdem: Createobjectex für SelbstaufrufCreateobjectex für Selbstaufruf
Wizards & Wizards & Builders GmbH Builders GmbH
Hinweise zu ModellenHinweise zu Modellen
Siehe Objektmodelle von Siehe Objektmodelle von Outlook, Excel, WinWordOutlook, Excel, WinWord
Applikations-ObjektApplikations-Objekt
Probleme mit CollectionsProbleme mit Collections mit Assign-Methoden realisierbar...mit Assign-Methoden realisierbar...
Probleme mit Child-ObjektenProbleme mit Child-Objekten
Wizards & Wizards & Builders GmbH Builders GmbH
Registrieren von ServernRegistrieren von Servern
Anmelden Anmelden ..
EXE: EXE:
<EXE> /regserver<EXE> /regserver DLL:DLL:
REGSRV32.EXEREGSRV32.EXE
<my.dll><my.dll>
Abmelden Abmelden ..
EXE:EXE:
<EXE> <EXE> /unregserver/unregserver
DLL:DLL:
REGSRV32.EXE REGSRV32.EXE
/u <my.dll>/u <my.dll>
Wizards & Wizards & Builders GmbH Builders GmbH
Anmelden Remote-ServerAnmelden Remote-Server
Server Server ..
EXE-Aufruf mit EXE-Aufruf mit /regserver/regserver
RACMGR32.EXERACMGR32.EXE Allow Remote Allow Remote
Creates by KeyCreates by Key Allow Remote Allow Remote
ActivationActivation
Client Client ..
VBR-Datei auf VBR-Datei auf Client kopierenClient kopieren
CLIREG32.EXE CLIREG32.EXE <myserver.vbr><myserver.vbr>
Eintrag Netz-Eintrag Netz-werkadresse werkadresse und -protokollund -protokoll
Wizards & Wizards & Builders GmbH Builders GmbH
Eigene Remote-ServerEigene Remote-Server
Mögliche Verwendungszwecke:Mögliche Verwendungszwecke: Reindizieren/Packen TabellenReindizieren/Packen Tabellen Komprimieren/DatensicherungKomprimieren/Datensicherung BuchungsläufeBuchungsläufe BerichtserstellungBerichtserstellung FaxversandFaxversand
Hinweis: CREATEOBJECTEX nicht vergessen!Hinweis: CREATEOBJECTEX nicht vergessen!
Wizards & Wizards & Builders GmbH Builders GmbH
Aufräumen RegistryAufräumen Registry
Schlüssel: HKEY_CLASSES_ROOTSchlüssel: HKEY_CLASSES_ROOT
Einträge:Einträge: <DLL-Name>.<OLE-Klasse><DLL-Name>.<OLE-Klasse> CLSID (Verweis TLB, Category)CLSID (Verweis TLB, Category) TypelibTypelib Component CategoriesComponent Categories
Wizards & Wizards & Builders GmbH Builders GmbH
BeispielanwendungBeispielanwendung
Darstellung der OLE-Darstellung der OLE-Objekte in Account View Objekte in Account View
unter Visual FoxProunter Visual FoxPro
Wizards & Wizards & Builders GmbH Builders GmbH
Übersicht OLE-ObjekteÜbersicht OLE-Objekte
Application (Anwendung)Application (Anwendung) Einloggen der AnwendungEinloggen der Anwendung Erzeugt Objekte auf ApplikationsebeneErzeugt Objekte auf Applikationsebene
Admin_Manager (Mandant)Admin_Manager (Mandant) Erzeugt GeschäftsobjekteErzeugt Geschäftsobjekte
Business (Geschäftsobjekt/BO)Business (Geschäftsobjekt/BO) Zugriffe auf Datensätze, Masken usw.Zugriffe auf Datensätze, Masken usw.
Wizards & Wizards & Builders GmbH Builders GmbH
ApplikationsklasseApplikationsklasse
Login ( user, pwd )Login ( user, pwd ) Anmelden der Anwendung / BenutzerAnmelden der Anwendung / Benutzer
Create_Object (form, para )Create_Object (form, para ) Erzeugen Objekte ApplikationsebeneErzeugen Objekte Applikationsebene
Menu_Exec ( event, para )Menu_Exec ( event, para ) Ausführen Menü auf Ausführen Menü auf
ApplikationsebeneApplikationsebene
Open_Admin ( admin, para /e )Open_Admin ( admin, para /e )
Wizards & Wizards & Builders GmbH Builders GmbH
AdministrationsklasseAdministrationsklasse
Create_Object ( form, para )Create_Object ( form, para ) Erzeugen eines GeschäftsobjektsErzeugen eines Geschäftsobjekts
Get_Field ( field )Get_Field ( field ) Lesen von PräferenzenLesen von Präferenzen
Set_Field ( field, value )Set_Field ( field, value ) Setzen von PräferenzenSetzen von Präferenzen
Wizards & Wizards & Builders GmbH Builders GmbH
BO - EigenschaftenBO - Eigenschaften
List_class / List_vcxList_class / List_vcx Klasse für ListenansichtKlasse für Listenansicht
Menu_fileMenu_file Menüdefinitionsdatei für KontextmenüMenüdefinitionsdatei für Kontextmenü
Pick_class / Pick_vcxPick_class / Pick_vcx Klasse für Lookup-AuswahlKlasse für Lookup-Auswahl
Setup_class / Setup_vcxSetup_class / Setup_vcx Klasse für StammdatenbearbeitungKlasse für Stammdatenbearbeitung
Wizards & Wizards & Builders GmbH Builders GmbH
BO - AnzeigefunktionenBO - Anzeigefunktionen
ShowShow Aufruf von List oder Picklist (pseudomodal)Aufruf von List oder Picklist (pseudomodal)
Show_ListShow_List Anzeige ListendarstellungAnzeige Listendarstellung
Show_PicklistShow_Picklist Anzeige PicklistenmaskeAnzeige Picklistenmaske
Show_SetupShow_Setup Anzeige StammdatenmaskeAnzeige Stammdatenmaske
Wizards & Wizards & Builders GmbH Builders GmbH
BO - ZustandsabfragenBO - Zustandsabfragen
Delete_EnabledDelete_Enabled Insert_EnabledInsert_Enabled Read_EnabledRead_Enabled Update_EnabledUpdate_Enabled
Wizards & Wizards & Builders GmbH Builders GmbH
BO - PointerfunktionenBO - Pointerfunktionen
LocateLocate Move_FirstMove_First Move_LastMove_Last Move_NextMove_Next Move_PreviousMove_Previous Move_PointerMove_Pointer Set_KeySet_Key
Wizards & Wizards & Builders GmbH Builders GmbH
BO - DatensatzfunktionenBO - Datensatzfunktionen
Create_RecordsetCreate_Recordset Record_DeleteRecord_Delete Record_InsertRecord_Insert Get_FieldGet_Field Set_FieldSet_Field Table_UpdateTable_Update Cancel_UpdateCancel_Update
Wizards & Wizards & Builders GmbH Builders GmbH
BO - diverse FunktionenBO - diverse Funktionen
Menu_ExecMenu_Exec Ausführen KontextmenüfunktionAusführen Kontextmenüfunktion
Meth_ExecMeth_Exec Ausführen Methode GeschäftsobjektAusführen Methode Geschäftsobjekt
Generate_ScriptGenerate_Script Ausgabe Script für DatenobjektAusgabe Script für Datenobjekt
Wizards & Wizards & Builders GmbH Builders GmbH
Was ist zu beachten?Was ist zu beachten?
OLE hat sehr OLE hat sehr viele Einsatz-viele Einsatz-bereiche...bereiche...
Objektmodell Objektmodell einfach halteneinfach halten
Interface kleinInterface klein OLE-BOs OLE-BOs
separat separat definierendefinieren
Wizards & Wizards & Builders GmbH Builders GmbH
Vielen Dank!Vielen Dank!
Das waren die Themen:Das waren die Themen: Einführung in OLEEinführung in OLE
Anforderungen, OLE-Anforderungen, OLE-Bereiche, ErläuterungenBereiche, Erläuterungen
Einführung in COMEinführung in COM COM-Definition, VorteileCOM-Definition, Vorteile
Erstellen von eigenen Erstellen von eigenen OLE-ServernOLE-Servern VFP-Befehle und HinweiseVFP-Befehle und Hinweise
BeispielanwendungBeispielanwendung Applikationsklasse, Applikationsklasse,
Administrationsklasse, Administrationsklasse, GeschäftsobjektklasseGeschäftsobjektklasse
Wizards & Wizards & Builders GmbH Builders GmbH
Wenn Fragen bestehen:Wenn Fragen bestehen:
Wizards & BuildersWizards & BuildersMethodische Software-Methodische Software-
Entwicklung GmbHEntwicklung GmbH
Frankfurter Str. 21bFrankfurter Str. 21b
61476 Kronberg61476 Kronberg
Tel.: 06173-950906Tel.: 06173-950906
Fax: 06173-950907Fax: 06173-950907
CIS: 101605,175CIS: 101605,175