Präsentation herunterladen
Die Präsentation wird geladen. Bitte warten
Veröffentlicht von:Sonje Bockrath Geändert vor über 11 Jahren
1
Erstellen von COM-Servern in Visual FoxPro 9.0 deutschsprachige FoxPro User Group Rainer Becker Microsoft Visual FoxPro 9.0 Roadshow COM
2
Component Object Model COM (Component Object Model) ist ein Microsoft Standard, der es anderen Applikationen, wie zum Beispiel Active Server Pages oder Microsoft Office erlaubt, auf Funktionalität der eigenen Applikation zuzugreifen COM (Component Object Model) ist ein Microsoft Standard, der es anderen Applikationen, wie zum Beispiel Active Server Pages oder Microsoft Office erlaubt, auf Funktionalität der eigenen Applikation zuzugreifen Man kann jedem Client, der COM-Objekte ansprechen kann, über COM beliebige Funktionalität zur Verfügung stellen Man kann jedem Client, der COM-Objekte ansprechen kann, über COM beliebige Funktionalität zur Verfügung stellen Dies gilt also bi-direktional (von/aus VFP) Dies gilt also bi-direktional (von/aus VFP)
3
Bekannte COM-Server I Microsoft Word und Microsoft Excel Microsoft Word und Microsoft Excel VFP kann auf diese Applikationen als Client problemlos zugreifen, oWord= createobject(Word.Application) VFP kann auf diese Applikationen als Client problemlos zugreifen, oWord= createobject(Word.Application) Die Funktionalität eines COM-Servers kann man im VFP Objekt Browser sehen Die Funktionalität eines COM-Servers kann man im VFP Objekt Browser sehen Intellisense unterstützt VFP bzgl. der benötigten Methoden und Eigenschaften z.B. local oExcel as Excel.application Intellisense unterstützt VFP bzgl. der benötigten Methoden und Eigenschaften z.B. local oExcel as Excel.application
4
Bekannte COM-Server II Der COM Client (z.B. der Object Browser) kann die verfügbare Funktionalität eines COM-Servers über die sogenannte Type Library erfahren Der COM Client (z.B. der Object Browser) kann die verfügbare Funktionalität eines COM-Servers über die sogenannte Type Library erfahren Indem man andere COM-Server in eigenen VFP Projekten verwendet, kann man VFP-Funktionalität beliebig erweitern. z.B. Excel für alle Rechenaufgaben einsetzen... Indem man andere COM-Server in eigenen VFP Projekten verwendet, kann man VFP-Funktionalität beliebig erweitern. z.B. Excel für alle Rechenaufgaben einsetzen... Das Ansteuern eines anderen COM-Servers nennt man auch OLE-Automation Das Ansteuern eines anderen COM-Servers nennt man auch OLE-Automation
5
COM-Objekt COM-Server benötigt ein Objekt OLE-Public COM-Server benötigt ein Objekt OLE-Public Es muss sich nicht um ein Geschäftsobjekt handeln Es muss sich nicht um ein Geschäftsobjekt handeln Sehr oft sind die eigentlichen Geschäftsobjekte nicht wirklich für einen Aufruf von außen geeignet! Sehr oft sind die eigentlichen Geschäftsobjekte nicht wirklich für einen Aufruf von außen geeignet! Es muss sich um ein Objekt handeln Es muss sich um ein Objekt handeln Zumindest ein Wrapper-Objekt für Funktionen ist notwendig Zumindest ein Wrapper-Objekt für Funktionen ist notwendig Basierend auf einer Klasse (Control/Container) Basierend auf einer Klasse (Control/Container) Aufruf via createobject aus anderen Anwendungen Aufruf via createobject aus anderen Anwendungen Methoden/Eigenschaften sind sichtbar/modifizierbar und müssen daher geschützt werden (siehe unten) Methoden/Eigenschaften sind sichtbar/modifizierbar und müssen daher geschützt werden (siehe unten)
6
OLE Public / Erstellungsoptionen
7
EXE / DLL (single/multi) Ein In-Process COM-Server ist eine DLL welche im Speicherbereich des Clients instanziiert wird. Diese COM Server Art kann keine direkte Interaktion mit dem User Interface haben OLE Fehler wird erzeugt Ein In-Process COM-Server ist eine DLL welche im Speicherbereich des Clients instanziiert wird. Diese COM Server Art kann keine direkte Interaktion mit dem User Interface haben OLE Fehler wird erzeugt Single Threaded: Jede Clientanwendung erhält eine eigene Instanz des COM Servers Single Threaded: Jede Clientanwendung erhält eine eigene Instanz des COM Servers Multi Threaded: Verschiedene Clientanwendung können sich die gleiche Instanz des COM Servers teilen Multi Threaded: Verschiedene Clientanwendung können sich die gleiche Instanz des COM Servers teilen Details beziehen sich auf Einsatz der COM Server unter MTS/COM+ Details beziehen sich auf Einsatz der COM Server unter MTS/COM+ Ein Out-of-Process COM-Server ist eine EXE, welche in einem eigenen Speicherbereich läuft. Ein Out-of-Process COM-Server ist eine EXE, welche in einem eigenen Speicherbereich läuft. Dieser COM-Server kann ein User Interface haben! Dieser COM-Server kann ein User Interface haben!
8
Type Libraries Die Type Library ist eine binäre Datei welche alle öffentlichen Klassen des COM Servers mit deren Methoden, Attributen und Events beschreibt. Eine Type Library kann vorliegen als: Die Type Library ist eine binäre Datei welche alle öffentlichen Klassen des COM Servers mit deren Methoden, Attributen und Events beschreibt. Eine Type Library kann vorliegen als: Ein eigene binäre Datei (.TLB,.OLB) Ein eigene binäre Datei (.TLB,.OLB) Integriert in eine DLL Integriert in eine DLL In eine EXE hineinkompiliert In eine EXE hineinkompiliert In ein ActiveX Control integriert In ein ActiveX Control integriert Wenn Sie ein Projekt mit OLEPUBLIC Klassen unter VFP kompilieren erhalten Sie 3 Dateien: Wenn Sie ein Projekt mit OLEPUBLIC Klassen unter VFP kompilieren erhalten Sie 3 Dateien: Die DLL oder EXE mit dem Projektnamen Die DLL oder EXE mit dem Projektnamen Eine Type Library (.TLB) Eine Type Library (.TLB) Eine Registry Datei (.VBR) Eine Registry Datei (.VBR)
9
COM-Server Dokumentation Andere Entwickler welche Ihre Komponenten verwenden, erhalten nur die Information welche Sie in der Description (Beschreibung) abgelegt haben (Klasse, Attribute, Methoden) Andere Entwickler welche Ihre Komponenten verwenden, erhalten nur die Information welche Sie in der Description (Beschreibung) abgelegt haben (Klasse, Attribute, Methoden) COM Server Methoden sollten daher in der Beschreibung enthalten: COM Server Methoden sollten daher in der Beschreibung enthalten: Beschreibung der zu übergebenden Parameter Beschreibung der zu übergebenden Parameter High-Level Beschreibung der Methode High-Level Beschreibung der Methode Was macht die Methode Was macht die Methode Beschreibung des Return Wertes Beschreibung des Return Wertes
10
Bessere Dokumentation in PRG! COMATTRIB (nur in PRG Dateien): COMATTRIB (nur in PRG Dateien): Festlegen welchen Status eine Property/Methode hat (nFlags bzw [1]) Festlegen welchen Status eine Property/Methode hat (nFlags bzw [1]) Restricted, Hidden, NonBrowsable Restricted, Hidden, NonBrowsable Hilfe String festlegen [2] Hilfe String festlegen [2] Gross/Kleinschreibung erhalten (Capitalisation) [3] Gross/Kleinschreibung erhalten (Capitalisation) [3] PropertyTyp angeben [4] PropertyTyp angeben [4] Anzahl Parameter [5] Anzahl Parameter [5] Diese Einstellungen wandern nur in die TLB (reine Information) und werden nicht enforced Diese Einstellungen wandern nur in die TLB (reine Information) und werden nicht enforced Es erfolgt also keine tatsächliche Typprüfung o.ä. Es erfolgt also keine tatsächliche Typprüfung o.ä.
11
Beispiel programmatisch DEFINE CLASS PrgDemo AS Session OLEPUBLIC PROCEDURE GetDateTime RETURN "Timestamp: "+TRANSFORM(DATETIME()) ENDPROC GetDateTime_COMATTRIB = COMATTRIB_NONBROWSABLE iAnzahl = 0 DIMENSION iAnzahl_COMATTRIB[4] iAnzahl_COMATTRIB[1] = COMATTRIB_READONLY iAnzahl_COMATTRIB[2] = Anzahl der Einträge && Hilfe iAnzahl_COMATTRIB[3] = iAnzahl && Gross/Kleinschr. iAnzahl_COMATTRIB[4] = Integer && Typ Angabe...
12
Access/Assign und Parameter Geschützte Methoden / Eigenschaften Geschützte Methoden / Eigenschaften Kleine Schnittstelle: Eigenschaften / Methoden ausblenden Kleine Schnittstelle: Eigenschaften / Methoden ausblenden Extensive Parameterprüfung in Methoden Extensive Parameterprüfung in Methoden Zugriffs-Methoden für Eigenschaften verwenden Zugriffs-Methoden für Eigenschaften verwenden Assign- & Access-Methoden Assign- & Access-Methoden Vartype und gültige Werte (Werteliste, Datum usw.) Vartype und gültige Werte (Werteliste, Datum usw.) Formattierung (Großbuchstaben, Leerzeichen) Formattierung (Großbuchstaben, Leerzeichen) Schreibgeschützte Eigenschaften Schreibgeschützte Eigenschaften Ausschließlich interner Zugriff (hidden property switch) Ausschließlich interner Zugriff (hidden property switch)
13
Sonstige Vorbereitungen Überprüfung des Startmodus Überprüfung des Startmodus INLIST( _vfp.startmode, 2,3,5 ) Automation Server Unattended Mode ausschalten Automation Server Unattended Mode ausschalten=SYS(2335,1) Fehlerbehandlung integrieren Fehlerbehandlung integrieren=COMRETURNERROR Sollte auch aus Access/Assign-Methoden aufgerufen werden Sollte auch aus Access/Assign-Methoden aufgerufen werden Setzen Sie alle Ihre Einstellungen Setzen Sie alle Ihre Einstellungen Uralt: Strg+OK liefert alle Optionen… Uralt: Strg+OK liefert alle Optionen…
14
Projektdefinition Hauptprogramm hinzufügen… Hauptprogramm hinzufügen… Testprogramm eignet sich dafür Testprogramm eignet sich dafür Tabellen für Steuerdaten inkludieren Tabellen für Steuerdaten inkludieren Config.fpw inkludieren Config.fpw inkludieren SCREEN = OFF (kein VFP-Desktop sichtbar) SCREEN = OFF (kein VFP-Desktop sichtbar) RESOURCE=OFF (keine Anlage Foxuser.dbf) RESOURCE=OFF (keine Anlage Foxuser.dbf) ALLOWEXTERNAL=ON (zusätzliche config.fpw mögl.) ALLOWEXTERNAL=ON (zusätzliche config.fpw mögl.) Sichtbar schalten sofern sinnvoll Sichtbar schalten sofern sinnvoll
15
Ausführung des COM-Servers Beispiel in Excel: Beispiel in Excel: Dim loRef as Object Dim loRef as Object On Error Goto SomeError On Error Goto SomeError Set loRef = createobject(exe.obj) Set loRef = createobject(exe.obj) … other operations … other operations Set loRef = Nothing Set loRef = Nothing Excel-Entwickler lieben VFP-Datenzugriff, da er viel einfacher für Sie ist als ODBC/ADO! Excel-Entwickler lieben VFP-Datenzugriff, da er viel einfacher für Sie ist als ODBC/ADO!
16
TypeLib-Abfrage Der Object Browser (Objektkatalog) kann Type Libraries auslesen und anzeigen Der Object Browser (Objektkatalog) kann Type Libraries auslesen und anzeigen Informationen zu einem COM-Server können per Drag & Drop in VFP übernommen werden Informationen zu einem COM-Server können per Drag & Drop in VFP übernommen werden
17
Registrierung COM-Server Wenn Sie aus einem VFP Projekt einen COM Server kompilieren, dann werden alle OLE Public Klassen automatisch auf dem lokalen Rechner registriert Wenn Sie aus einem VFP Projekt einen COM Server kompilieren, dann werden alle OLE Public Klassen automatisch auf dem lokalen Rechner registriert Wenn Sie mit den gängigen Installations-tools (Installshield, Wise..) ein Setup erstellen, so werden die COM Komponenten automatisch auf dem Rechner registriert Wenn Sie mit den gängigen Installations-tools (Installshield, Wise..) ein Setup erstellen, so werden die COM Komponenten automatisch auf dem Rechner registriert Sie können dies auch manuell mit Hilfe der Windows Tools RegServer, UnRegServer und RegSrv32 erledigen Sie können dies auch manuell mit Hilfe der Windows Tools RegServer, UnRegServer und RegSrv32 erledigen Wenn VFP nicht installiert ist, muss zuerst die VFP Runtime installiert werden, damit der COM-Server lauffähig ist! Wenn VFP nicht installiert ist, muss zuerst die VFP Runtime installiert werden, damit der COM-Server lauffähig ist!
18
Auslieferung des COM-Servers Laufzeitverzeichnis enthält Laufzeitverzeichnis enthält.exe.exe VFP9R.DLL, VFP9RENU.DLL VFP9R.DLL, VFP9RENU.DLL GDIPLUS.DLL GDIPLUS.DLL REGSVR32.EXE REGSVR32.EXE MSVCR71.DLL in system32 MSVCR71.DLL in system32 Regsvr32.exe vfp9r.dll Regsvr32.exe vfp9r.dll.exe /regserver.exe /regserver
19
Querverweise 06-17 Entwickeln und Debuggen von COM Servern 06-17 Entwickeln und Debuggen von COM Servern
20
Vielen Dank! Besuchen Sie unsere Webseiten: http://www.dfpug.de, http://portal.dfpug.de, http://forum.dfpug.de, http://newsletter.dfpug.de, http://devcon.dfpug.de, http://roadshow.dfpug.de, http://www.visualextend.de, http://www.linuxtransfer.de, http://www.visualfoxpro.de http://www.dfpug.de http://portal.dfpug.dehttp://forum.dfpug.de http://newsletter.dfpug.dehttp://devcon.dfpug.de http://roadshow.dfpug.dehttp://www.visualextend.de http://www.linuxtransfer.dehttp://www.visualfoxpro.dehttp://www.dfpug.de http://portal.dfpug.dehttp://forum.dfpug.de http://newsletter.dfpug.dehttp://devcon.dfpug.de http://roadshow.dfpug.dehttp://www.visualextend.de http://www.linuxtransfer.dehttp://www.visualfoxpro.de
Ähnliche Präsentationen
© 2024 SlidePlayer.org Inc.
All rights reserved.