anoniem Geplaatst: 26 september 2002 Delen Geplaatst: 26 september 2002 In principe is een COM-object op je systeem voor iedereen (die COM-objecten kan gebruiken) toegankelijk. Ze vertellen tenslotte welke routines ze hebben, wat voor een parameters ze daarvoor nodig hebben en zo. Maar wat als je wel de voordelen van COM wilt hebben, maar alleen jouw eigen applicaties dat COM-object wilt laten gebruiken ? Hoe zou je zoiets aanpakken ? Quote Link naar reactie
anoniem Geplaatst: 1 oktober 2002 Auteur Delen Geplaatst: 1 oktober 2002 Dit ligt eraan. Als je een in-process COM object aanmaakt, dan kun je je eigen applicaties een functie laten exporteren die de COM library vervolgens aanroept om te controleren of het object wel door een geldige applicatie wordt aangeroepen. In Delphi krijg je dan iets als: Applicatie[code:1:ae143342ad]function CheckApplication: Boolean; begin Result := True; end; exports CheckApplication;[/code:1:ae143342ad] en in het COM object krijg je deze code:[code:1:ae143342ad]type TGetCheckApplication = function: Boolean; var GetCheckApplication: TGetCheckApplication; begin GetCheckApplication := TGetCheckApplication(GetProcAddress(GetModuleHandle(nil), 'CheckApplication')); if assigned(GetCheckApplication) and GetCheckApplication then { OK!}; end;[/code:1:ae143342ad] Echter, deze truuk werkt alleen bij in-process COM objecten. Maar het is een handige truuk om meer communicatie tussen COM object en de main applicatie mogelijk te maken. Zo gebruik ik vergelijkbare functies om mijn COM objecten te initialiseren met waardes uit de applicatie, zoals gebruikersnaam en wachtwoord. Heeft de hoofd applicatie geen geexporteerde functie dan heeft het COM object geen andere mogelijkheid om aan deze gegevens te komen en wordt er op de 'Create' een popup getoond waarin geldige waardes worden opgevraagd. Maar ja, er is een eenvoudigere mogelijkheid. Je kunt namelijk ook gelicenceerde COM objecten aanmaken waarbij je naast het COM object ook een speciaal licentie-bestandje krijgt. Zonder dit bestandje kun je de control niet gebruiken in design-time. En dit werkt vrij goed, ook met DCOM en COM+. En het object werkt prima zonder die licentie. Het heeft alleen de licentie nodig in design-mode. Quote Link naar reactie
Aanbevolen berichten
Om een reactie te plaatsen, moet je eerst inloggen