Results 1 to 5 of 5

Thread: Vanuit DLL functie uitvoeren die in de applicatie zit

  1. #1

    Lightbulb Vanuit DLL functie uitvoeren die in de applicatie zit

    Ik weet hoe ik kan werken met DLL's, en wil nu graag DLL's gebruiken als plugins. Ik heb de overweging naar BPL gemaakt maar wil ook graag derden de mogelijkheid geven om plugins te maken. Een van de dingen die ik mij afvraag is - is het mogelijk om vanuit een DLL functies uit te voeren die in de applicatie staan?

    Voorbeeld:
    Ik heb alerts (meldingen over vanalles in de applicatie), en wil mogelijkheid geven om alerts toe te voegen vanuit de dll. Zo kan een plugin dan een alert geven aan de applicatie waar ik deze in hetzelfde venster als de applicatie alerts worden getoond. Zo zou ik ook graag toegang tot bepaalde andere functies geven, zodat je vanuit de plugin toegang hebt tot functies die in de applicatie zelf zitten.

    Is dit mogelijk? Of kan ik hiervoor beter een DLL maken die die alerts managed, en dan vanuit de plugin toegang tot die dll?

  2. #2
    Ja, dat kan. Je applicatie kan procedures in de DLL aanroepen, en kan daaraan pointers meegeven naar callback functies in de applicatie, of naar complete interfaces. De DLL kan die procs en functies, of de methods van de interface, gebruiken om je applicatie aan te roepen. Je plugin moet dan wel weten wat de declaraties (signatures) van die functies zijn, maar die kan je in een aparte unit beschrijven, die dan makkelijk in de DLL gebruikt kan worden. Die unit en z'n documentatie is dan in feite de SDK voor het schrijven van plugins voor je applicatie.

    Als je geen BPLs wilt gebruiken zodat je ook non-Delphi DLLs kan gebruiken, houd er dan rekening mee dat je geen Delphi-specifieke typen gebruikt in de interfaces en de functie-parameters. Volgens mij zou je wel de (COM-compatible) BSTR moeten kunnen gebruiken, maar geen gewone strings, bijvoorbeeld.

    UI in een aparte DLL stoppen zou ik niet doen. Om dat goed te laten werken met je hoofdscherm, moet je de handle van dat scherm, of van de applicatie zelf weten. Als je UI dll wordt ingeladen vanuit een plugin, heb je al die informatie niet, en loop het het risico op rare bijverschijnselen (modal scherm achter je hoofdscherm e.d.)
    Last edited by GolezTrol; 21-Aug-21 at 00:44.
    1+1=b

  3. #3
    Nu wat ik al vaker gedaan heb is een venster in een DLL plaatsen, en deze laden op een panel - of een andere WINCONTROL. Ik had deze al gevonden http://rvelthuis.de/articles/articles-dlls.html waar goed uitgelegd staat wat de do's en dont's zijn wbt typen. Weet jij toevallig ergens een voorbeeld van hoe ik kan werken met callbacks?

  4. #4
    andere mogelijkheid is de functions in the exe exporteren, werkt net als bij een dll

    PS https://stackoverflow.com/questions/...-to-dll-delphi bevat beide mogelijkheden.

  5. #5
    Dankjewel ik ga die eens proberen, er hoeven maar een aantal functies geexporteerd te worden - ik ga eens kijken of het lukt via de exe exports

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •