AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

COM Interface / pdfMachine

Ein Thema von skyware · begonnen am 30. Jul 2006 · letzter Beitrag vom 16. Aug 2006
Antwort Antwort
skyware

Registriert seit: 11. Dez 2002
Ort: Wetzikon, Zürich
151 Beiträge
 
Delphi 6 Enterprise
 
#1

COM Interface / pdfMachine

  Alt 30. Jul 2006, 11:58
Hallo zusammen,

ich versuche mich gerade im ersteller eines COM Interfaces.
Leider hab ich das noch nie gemacht, und habe dazu ein paar Fragen.

Grundsätzlich möchte ich ein Programm machen das sich in die PDF Machine Software einklinkt
( http://www.pdfmachine.com ).

Dazu habe ich folgende Infos gefunden:

http://www.pdfmachine.com/genp/customToolbar.html

Die benötigten Registry Einträge konnte ich erfolgreich machen, und sehe diese neuen Buttons jetzt auch.

Mein Problem ist allerdings der Abschnitt "COM Interface - click handler".
Hier verstehe ich nicht genau was für eine Art Projekt ich jetzt im Delphi anlegen muss "Neu-Weitere-ActiveX-?"
Geschweige denn welche Parameter ich bei den Funktionen angeben muss?

Kann mir hier jemand unter die Arme greifen?


Gruss und Danke
  Mit Zitat antworten Zitat
Benutzerbild von DGL-luke
DGL-luke

Registriert seit: 1. Apr 2005
Ort: Bad Tölz
4.149 Beiträge
 
Delphi 2006 Professional
 
#2

Re: COM Interface / pdfMachine

  Alt 30. Jul 2006, 12:12
ActiveX musst du nur machen, wenn du selber n ActiveX-Control machen willst, glaub ich mal...

Es sollte schon so funktionieren:

Delphi-Quellcode:
type
  IMyPDFMachineInterface = interface(IDispatch)
    procedure clicked(ButtonText, pdfMachineViewer: TVariant); //Variant weil ioch nicht weiss was das für datentypen sien müssen... da muss du dich selber noch ein wenig einlesen ;)
  end;

  TMachinePDFHandler = class(TObject, IMyPDFMachineInterface);
    //implement IMyPDFMachineInterface
    procedure clicked(ButtonText, pdfMachineViewer: TVariant);
  end;
Dann musst du nur noch ein Object erzeugen und als Interface bei Machine PDF bekannt machen.

Eventuell must du wirklcih ein OLE-Objekt registrieren... da kenn ich mich nicht aus...

EDIT: OK, du musst das wirklcih als komplettes OLE-Objekt bauen. da kann ich dir nicht helfen, sry, aber das codeschnipsel oben gehört auch dazu
Lukas Erlacher
Suche Grafiktablett. Spenden/Gebrauchtangebote willkommen.
Gotteskrieger gesucht!
For it is the chief characteristic of the religion of science that it works. - Isaac Asimov, Foundation I, Buch 1
  Mit Zitat antworten Zitat
skyware

Registriert seit: 11. Dez 2002
Ort: Wetzikon, Zürich
151 Beiträge
 
Delphi 6 Enterprise
 
#3

Re: COM Interface / pdfMachine

  Alt 16. Aug 2006, 10:34
*push* hat wirklich niemand eine Ahnung wie ich diesen COM-Server implementieren muss?
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#4

Re: COM Interface / pdfMachine

  Alt 16. Aug 2006, 10:54
Du fängst ohne Projekt an.
Datei -> Neu -> ActiveX -> ActiveX-Bibliothek (also eine DLL)
dann
Datei -> Neu -> ActiveX -> Automatisierungsobjekt
Name der CoClass: "PdfButton"

Es wird der TLB-Editor angezeigt.
Du wählst das Interface "IPdfButton" und wählst "neue Methode"
Die Methode bekommt den Namen "Clicked"
Auf der Seite Parameter fügst du 2 neue Parameter hinzu:
Name: "buttonText" Typ: BSTR
Name: "pdfMachineviewer" Typ: IDispatch *

Im TLB-Editor drückst du auf Implementierung aktualisieren
Delphi generiert dir folgenden Sourcecode:
Delphi-Quellcode:
procedure TPdfButton.Clicked(const buttonText: WideString;
  const pdfMachineviewer: IDispatch);
begin
   // und hier musst du dann weitermachen
end;
Andreas
  Mit Zitat antworten Zitat
skyware

Registriert seit: 11. Dez 2002
Ort: Wetzikon, Zürich
151 Beiträge
 
Delphi 6 Enterprise
 
#5

Re: COM Interface / pdfMachine

  Alt 16. Aug 2006, 11:35
hallo shmia,

danke für die rasche Antwort! Ich hab das jetzt mal gemäss Deinen Vorgaben versucht.
Das erstellen des COM-Servers hat wunderbar funktioniert.

Leider funktioniert irgendwas doch noch nicht ganz...anbei mal der Source Code und die Fehlermeldung die mir die PDFMachine auslöst.

Was könnte ich noch falsch gemacht haben?

Die Einstellungen gemäss http://www.pdfmachine.com/genp/customToolbar.html habe ich auch gemacht.

als Wert im "extraButtonsComHandler" habe ich "HorizonPDFMachine.dll" eingetragen.
Der Button ist sonst richtig eingetragen, sonst würde er ja in der PDFMachine nicht ersichtlich sein.

hmm... Ideen?

Mit der "*.WSC - Datei" Methode habe ich es auch versucht, das scheint zu funktionieren.
Miniaturansicht angehängter Grafiken
pdfmachine_error_143.jpg  
Angehängte Dateien
Dateityp: zip horizonpdfmachine_181.zip (104,8 KB, 6x aufgerufen)
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#6

Re: COM Interface / pdfMachine

  Alt 16. Aug 2006, 12:37
Zitat von skyware:
als Wert im "extraButtonsComHandler" habe ich "HorizonPDFMachine.dll" eingetragen.
Das ist wohl nicht ganz richtig; du musst nicht den Namen der DLL, sondern die ClassId deiner Klasse eintragen.
Hier deine TLB-Datei (im IDL-format):
Code:
library HorizonPDFMachine
{
    // TLib :    // TLib : OLE Automation : {00020430-0000-0000-C000-000000000046}
    importlib("stdole2.tlb");

    // Forward declare all types defined in this typelib
    interface IPdfButton;

    [
      odl,
      uuid(569A5C4B-839E-4199-87DC-6385C39577E6),
      version(1.0),
      helpstring("Dispatch-Schnittstelle für PdfButton-Objekt"),
      dual,
      oleautomation
    ]
    interface IPdfButton : IDispatch {
        [id(0x00000001)]
        HRESULT clicked(
                        [in] BSTR buttonText,
                        [in] IDispatch* pdfMachineviewer);
    };

    [
      uuid(F557474E-27A7-44E7-8B04-263351DCA7BD),
      version(1.0),
      helpstring("PdfButton Objekt")
    ]
    coclass PdfButton {
        [default] interface IPdfButton;
    };
};
Deine Bibliothek heisst HorizonPDFMachine, deine CoClass heisst PdfButton
=> ClassID = 'HorizonPDFMachine.PdfButton'
Windows findet deine DLL über Einträge in der Registry/COM-Datenbank.
Dazu musst du sie aber registrieren mit RegSvr32.exe oder in Delphi mit Start->ActiveX Server eintragen
Andreas
  Mit Zitat antworten Zitat
skyware

Registriert seit: 11. Dez 2002
Ort: Wetzikon, Zürich
151 Beiträge
 
Delphi 6 Enterprise
 
#7

Re: COM Interface / pdfMachine

  Alt 16. Aug 2006, 12:50
wunderbar, das funktioniert!

Vielen Dank für die schnelle und professionelle Hilfe.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:25 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz