20
Erstellen von COM- Erstellen von COM- Servern in Visual Servern in Visual FoxPro 9.0 FoxPro 9.0 deutschsprachige FoxPro User deutschsprachige FoxPro User Group Group Rainer Becker Rainer Becker Microsoft Visual FoxPro 9.0 Microsoft Visual FoxPro 9.0 Roadshow Roadshow COM

Erstellen von COM-Servern in Visual FoxPro 9.0

  • Upload
    newton

  • View
    31

  • Download
    1

Embed Size (px)

DESCRIPTION

COM. Erstellen von COM-Servern in Visual FoxPro 9.0. deutschsprachige FoxPro User Group Rainer Becker Microsoft Visual FoxPro 9.0 Roadshow. Component Object Model. - PowerPoint PPT Presentation

Citation preview

Page 1: Erstellen von COM-Servern in Visual FoxPro 9.0

Erstellen von COM-Servern Erstellen von COM-Servern in Visual FoxPro 9.0in Visual FoxPro 9.0

deutschsprachige FoxPro User Groupdeutschsprachige FoxPro User Group

Rainer BeckerRainer Becker

Microsoft Visual FoxPro 9.0 RoadshowMicrosoft Visual FoxPro 9.0 Roadshow

COM

Page 2: Erstellen von COM-Servern in Visual FoxPro 9.0

Component Object ModelComponent Object Model

COM (Component Object Model) ist ein Microsoft COM (Component Object Model) ist ein Microsoft Standard, der es anderen Applikationen, wie zum Standard, der es anderen Applikationen, wie zum Beispiel Active Server Pages oder Microsoft Office Beispiel Active Server Pages oder Microsoft Office erlaubt, auf Funktionalität der eigenen Applikation erlaubt, auf Funktionalität der eigenen Applikation zuzugreifenzuzugreifen

Man kann jedem Client, der COM-Objekte Man kann jedem Client, der COM-Objekte ansprechen kann, über COM beliebige Funktionalität ansprechen kann, über COM beliebige Funktionalität zur Verfügung stellenzur Verfügung stellen

Dies gilt also bi-direktional (von/aus VFP)Dies gilt also bi-direktional (von/aus VFP)

Page 3: Erstellen von COM-Servern in Visual FoxPro 9.0

Bekannte COM-Server IBekannte COM-Server I

Microsoft Word und Microsoft ExcelMicrosoft Word und Microsoft Excel VFP kann auf diese Applikationen als Client VFP kann auf diese Applikationen als Client

problemlos zugreifen, problemlos zugreifen, oWord=oWord=createobject(„Word.Application“)createobject(„Word.Application“)

Die Funktionalität eines COM-Servers kann man im Die Funktionalität eines COM-Servers kann man im VFP Objekt Browser sehenVFP Objekt Browser sehen

Intellisense unterstützt VFP bzgl. der benötigten Intellisense unterstützt VFP bzgl. der benötigten Methoden und Eigenschaften z.B. local oExcel as Methoden und Eigenschaften z.B. local oExcel as ‚Excel.application‘‚Excel.application‘

Page 4: Erstellen von COM-Servern in Visual FoxPro 9.0

Bekannte COM-Server IIBekannte COM-Server II

Der COM Client (z.B. der Object Browser) kann die Der COM Client (z.B. der Object Browser) kann die verfügbare Funktionalität eines COM-Servers über verfügbare Funktionalität eines COM-Servers über die sogenannte Type Library erfahrendie sogenannte Type Library erfahren

Indem man andere COM-Server in eigenen VFP Indem man andere COM-Server in eigenen VFP Projekten verwendet, kann man VFP-Funktionalität Projekten verwendet, kann man VFP-Funktionalität beliebig erweitern. z.B. Excel für alle beliebig erweitern. z.B. Excel für alle Rechenaufgaben einsetzen...Rechenaufgaben einsetzen...

Das Ansteuern eines anderen COM-Servers nennt Das Ansteuern eines anderen COM-Servers nennt man auch OLE-Automationman auch OLE-Automation

Page 5: Erstellen von COM-Servern in Visual FoxPro 9.0

COM-ObjektCOM-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 handelnEs muss sich nicht um ein Geschäftsobjekt handeln

Sehr oft sind die eigentlichen Geschäftsobjekte nicht wirklich für Sehr oft sind die eigentlichen Geschäftsobjekte nicht wirklich für einen Aufruf von außen geeignet!einen Aufruf von außen geeignet!

Es muss sich um ein Objekt handelnEs muss sich um ein Objekt handeln Zumindest ein Wrapper-Objekt für Funktionen ist notwendigZumindest 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 AnwendungenAufruf via „createobject“ aus anderen Anwendungen Methoden/Eigenschaften sind sichtbar/modifizierbar und Methoden/Eigenschaften sind sichtbar/modifizierbar und

müssen daher geschützt werden (siehe unten)müssen daher geschützt werden (siehe unten)

Page 6: Erstellen von COM-Servern in Visual FoxPro 9.0

OLE Public / ErstellungsoptionenOLE Public / Erstellungsoptionen

Page 7: Erstellen von COM-Servern in Visual FoxPro 9.0

EXE / DLL (single/multi)EXE / DLL (single/multi) Ein In-Process COM-Server ist eine DLL welche im Ein In-Process COM-Server ist eine DLL welche im

Speicherbereich des Clients instanziiert wird. Diese COM Speicherbereich des Clients instanziiert wird. Diese COM Server Art kann Server Art kann keinekeine direkte Interaktion mit dem User direkte Interaktion mit dem User Interface haben Interface haben OLE Fehler wird erzeugt OLE Fehler wird erzeugt Single Threaded: Single Threaded: Jede Clientanwendung erhält eine eigene Jede Clientanwendung erhält eine eigene

Instanz des COM ServersInstanz des COM Servers Multi Threaded: Multi Threaded: Verschiedene Clientanwendung können sich Verschiedene Clientanwendung können sich

die gleiche Instanz des COM Servers „teilen“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 Ein Out-of-Process COM-Server ist eine EXE, welche in einem eigenen Speicherbereich läuft. einem eigenen Speicherbereich läuft. Dieser COM-Server kann ein User Interface haben!Dieser COM-Server kann ein User Interface haben!

Page 8: Erstellen von COM-Servern in Visual FoxPro 9.0

Type LibrariesType Libraries Die Type Library ist eine binäre Datei welche alle öffentlichen Die Type Library ist eine binäre Datei welche alle öffentlichen

Klassen des COM Servers mit deren Methoden, Attributen Klassen des COM Servers mit deren Methoden, Attributen und Events beschreibt. Eine Type Library kann vorliegen als: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 DLLIntegriert in eine DLL In eine EXE hineinkompiliertIn eine EXE hineinkompiliert In ein ActiveX Control integriertIn ein ActiveX Control integriert

Wenn Sie ein Projekt mit OLEPUBLIC Klassen unter VFP Wenn Sie ein Projekt mit OLEPUBLIC Klassen unter VFP kompilieren erhalten Sie 3 Dateien:kompilieren erhalten Sie 3 Dateien: Die DLL oder EXE mit dem ProjektnamenDie DLL oder EXE mit dem Projektnamen Eine Type Library (.TLB)Eine Type Library (.TLB) Eine Registry Datei (.VBR)Eine Registry Datei (.VBR)

Page 9: Erstellen von COM-Servern in Visual FoxPro 9.0

COM-Server DokumentationCOM-Server Dokumentation

Andere Entwickler welche Ihre Komponenten verwenden, Andere Entwickler welche Ihre Komponenten verwenden, erhalten nur die Information welche Sie in der Description erhalten nur die Information welche Sie in der Description (Beschreibung) abgelegt haben (Klasse, Attribute, Methoden)(Beschreibung) abgelegt haben (Klasse, Attribute, Methoden)

COM Server Methoden sollten daher in der Beschreibung COM Server Methoden sollten daher in der Beschreibung enthalten:enthalten: Beschreibung der zu übergebenden ParameterBeschreibung der zu übergebenden Parameter High-Level Beschreibung der MethodeHigh-Level Beschreibung der Methode Was macht die MethodeWas macht die Methode Beschreibung des Return WertesBeschreibung des Return Wertes

Page 10: Erstellen von COM-Servern in Visual FoxPro 9.0

Bessere Dokumentation in PRG!Bessere Dokumentation in PRG! COMATTRIB (nur in PRG Dateien):COMATTRIB (nur in PRG Dateien):

Festlegen welchen Status eine Property/Methode hat Festlegen welchen Status eine Property/Methode hat (nFlags bzw [1]) (nFlags bzw [1])

Restricted, Hidden, NonBrowsableRestricted, 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 Diese Einstellungen wandern nur in die TLB (reine Information) und werden nicht enforcedInformation) und werden nicht enforced Es erfolgt also keine tatsächliche Typprüfung o.ä.Es erfolgt also keine tatsächliche Typprüfung o.ä.

Page 11: Erstellen von COM-Servern in Visual FoxPro 9.0

Beispiel programmatischBeispiel programmatischDEFINE CLASS PrgDemo AS Session OLEPUBLICDEFINE CLASS PrgDemo AS Session OLEPUBLIC

PROCEDURE GetDateTimePROCEDURE GetDateTimeRETURN "Timestamp: "+TRANSFORM(DATETIME())RETURN "Timestamp: "+TRANSFORM(DATETIME())

ENDPROCENDPROCGetDateTime_COMATTRIB = COMATTRIB_NONBROWSABLEGetDateTime_COMATTRIB = COMATTRIB_NONBROWSABLE

iAnzahl = 0iAnzahl = 0

DIMENSION iAnzahl_COMATTRIB[4] DIMENSION iAnzahl_COMATTRIB[4] iAnzahl_COMATTRIB[1] = COMATTRIB_READONLYiAnzahl_COMATTRIB[1] = COMATTRIB_READONLYiAnzahl_COMATTRIB[2] = „Anzahl der Einträge“ && HilfeiAnzahl_COMATTRIB[2] = „Anzahl der Einträge“ && HilfeiAnzahl_COMATTRIB[3] = „iAnzahl“ && Gross/Kleinschr.iAnzahl_COMATTRIB[3] = „iAnzahl“ && Gross/Kleinschr.iAnzahl_COMATTRIB[4] = „Integer“ && Typ AngabeiAnzahl_COMATTRIB[4] = „Integer“ && Typ Angabe......

Page 12: Erstellen von COM-Servern in Visual FoxPro 9.0

Access/Assign und ParameterAccess/Assign und Parameter

Geschützte Methoden / EigenschaftenGeschützte Methoden / Eigenschaften Kleine Schnittstelle: Eigenschaften / Methoden ausblendenKleine Schnittstelle: Eigenschaften / Methoden ausblenden Extensive Parameterprüfung in MethodenExtensive Parameterprüfung in Methoden Zugriffs-Methoden für Eigenschaften verwendenZugriffs-Methoden für Eigenschaften verwenden

Assign- & Access-MethodenAssign- & 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 EigenschaftenSchreibgeschützte Eigenschaften Ausschließlich interner Zugriff (hidden property switch)Ausschließlich interner Zugriff (hidden property switch)

Page 13: Erstellen von COM-Servern in Visual FoxPro 9.0

Sonstige VorbereitungenSonstige Vorbereitungen

Überprüfung des StartmodusÜberprüfung des StartmodusINLIST( _vfp.startmode, 2,3,5 )INLIST( _vfp.startmode, 2,3,5 )

Automation Server Unattended Mode ausschaltenAutomation Server Unattended Mode ausschalten=SYS(2335,1)=SYS(2335,1)

Fehlerbehandlung integrierenFehlerbehandlung integrieren=COMRETURNERROR=COMRETURNERROR

Sollte auch aus Access/Assign-Methoden aufgerufen werdenSollte 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…

Page 14: Erstellen von COM-Servern in Visual FoxPro 9.0

ProjektdefinitionProjektdefinition

Hauptprogramm hinzufügen…Hauptprogramm hinzufügen… Testprogramm eignet sich dafürTestprogramm eignet sich dafür

Tabellen für Steuerdaten inkludierenTabellen für Steuerdaten inkludieren Config.fpw inkludierenConfig.fpw inkludieren

SCREEN = OFFSCREEN = OFF (kein VFP-Desktop sichtbar) (kein VFP-Desktop sichtbar) RESOURCE=OFFRESOURCE=OFF (keine Anlage Foxuser.dbf) (keine Anlage Foxuser.dbf) ALLOWEXTERNAL=ON (zusätzliche config.fpw mögl.)ALLOWEXTERNAL=ON (zusätzliche config.fpw mögl.)

Sichtbar schalten sofern sinnvollSichtbar schalten sofern sinnvoll

Page 15: Erstellen von COM-Servern in Visual FoxPro 9.0

Ausführung des COM-ServersAusführung des COM-Servers

Beispiel in Excel:Beispiel in Excel: Dim loRef as ObjectDim loRef as Object On Error Goto SomeErrorOn Error Goto SomeError Set loRef = createobject(„exe.obj“)Set loRef = createobject(„exe.obj“) … … other operationsother operations Set loRef = NothingSet loRef = Nothing

Excel-Entwickler lieben VFP-Datenzugriff, da er viel Excel-Entwickler lieben VFP-Datenzugriff, da er viel einfacher für Sie ist als ODBC/ADO!einfacher für Sie ist als ODBC/ADO!

Page 16: Erstellen von COM-Servern in Visual FoxPro 9.0

TypeLib-AbfrageTypeLib-Abfrage

Der Object Browser Der Object Browser (Objektkatalog) kann Type (Objektkatalog) kann Type Libraries auslesen und Libraries auslesen und anzeigenanzeigen

Informationen zu einem Informationen zu einem COM-Server können per COM-Server können per Drag & Drop in VFP Drag & Drop in VFP übernommen werden übernommen werden

Page 17: Erstellen von COM-Servern in Visual FoxPro 9.0

Registrierung COM-ServerRegistrierung COM-Server

Wenn Sie aus einem VFP Projekt einen COM Server Wenn Sie aus einem VFP Projekt einen COM Server kompilieren, dann werden alle OLE Public Klassen kompilieren, dann werden alle OLE Public Klassen automatisch auf dem automatisch auf dem lokalenlokalen Rechner registriert Rechner registriert

Wenn Sie mit den gängigen Installations-tools (Installshield, Wenn Sie mit den gängigen Installations-tools (Installshield, Wise..) ein Setup erstellen, so werden die COM Komponenten Wise..) ein Setup erstellen, so werden die COM Komponenten automatisch auf dem Rechner registriertautomatisch auf dem Rechner registriert

Sie können dies auch manuell mit Hilfe der Windows Tools Sie können dies auch manuell mit Hilfe der Windows Tools RegServer, UnRegServer und RegSrv32 erledigenRegServer, UnRegServer und RegSrv32 erledigen

Wenn VFP nicht installiert ist, muss zuerst die VFP Runtime Wenn VFP nicht installiert ist, muss zuerst die VFP Runtime installiert werden, damit der COM-Server lauffähig ist!installiert werden, damit der COM-Server lauffähig ist!

Page 18: Erstellen von COM-Servern in Visual FoxPro 9.0

Auslieferung des COM-ServersAuslieferung des COM-Servers

Laufzeitverzeichnis enthältLaufzeitverzeichnis enthält <IhrServer>.exe<IhrServer>.exe VFP9R.DLL, VFP9RENU.DLLVFP9R.DLL, VFP9RENU.DLL GDIPLUS.DLLGDIPLUS.DLL REGSVR32.EXEREGSVR32.EXE

MSVCR71.DLL in system32MSVCR71.DLL in system32 Regsvr32.exe vfp9r.dllRegsvr32.exe vfp9r.dll <IhrServer>.exe /regserver<IhrServer>.exe /regserver

Page 19: Erstellen von COM-Servern in Visual FoxPro 9.0

QuerverweiseQuerverweise

06-17 Entwickeln und Debuggen von COM Servern06-17 Entwickeln und Debuggen von COM Servern

Page 20: Erstellen von COM-Servern in Visual FoxPro 9.0

Vielen Dank!Vielen Dank!

Besuchen Sie unsere Webseiten: Besuchen Sie unsere Webseiten: http://www.dfpug.dehttp://www.dfpug.de, , http://portal.dfpug.dehttp://portal.dfpug.de, , http://forum.dfpug.dehttp://forum.dfpug.de, ,

http://newsletter.dfpug.dehttp://newsletter.dfpug.de, , http://devcon.dfpug.dehttp://devcon.dfpug.de, , http://roadshow.dfpug.de, http://www.visualextend.de, http://roadshow.dfpug.de, http://www.visualextend.de,

http://www.linuxtransfer.de, http://www.visualfoxpro.de http://www.linuxtransfer.de, http://www.visualfoxpro.de