Ga naar inhoud

beperken gebruik van COM-objecten door 'derde partijen' ...


anoniem

Aanbevolen berichten

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 ?
Link naar reactie
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.
Link naar reactie

Om een reactie te plaatsen, moet je eerst inloggen

Gast
Reageer op dit topic

×   Geplakt als verrijkte tekst.   Herstel opmaak

  Er zijn maximaal 75 emoji toegestaan.

×   Je link werd automatisch ingevoegd.   Tonen als normale link

×   Je vorige inhoud werd hersteld.   Leeg de tekstverwerker

×   Je kunt afbeeldingen niet direct plakken. Upload of voeg afbeeldingen vanaf een URL in

  • Populaire leden

    Er is nog niemand die deze week reputatie heeft ontvangen.

  • Leden

    Geen leden om te tonen

×
×
  • Nieuwe aanmaken...