Plugin system σε Visual Basic 6;Δεν θα την χαρακτήριζα ως γλώσσα που θα σε διευκολύνει στην συγκεκριμένη εργασία (βασικά πλέον δε θα σε διευκολύνει σε καμία εργασία) αλλά θα σου δώσω μερικές πληροφορίες για να ξεκινήσεις,δεδομένου ότι ελάχιστα πράγματα θυμάμαι πλέον από την συγκεκριμένη γλώσσα.
Τι είναι τα plugins;Βιβλιοθήκες κώδικα,κυρίως με τη μορφή dynamic link libraries (όχι απαραίτητα με επέκταση .dll φυσικά).Ως υποθετικό παράδειγμα σε ένα πρόγραμμα επεξεργασίας εικόνας που χρησιμοποιεί plugins ως φίλτρα έχει ένα plugin ονόματι Distort.dll για παραμόρφωση εικόνας,Sharpen.dll για όξυνση αντίθεσης κ.ο.κ. Είναι υποχρεωτικό για κάθε plugin του προγράμματος να υλοποιεί την ίδια ή τις ίδιες συναρτήσεις-στο παράδειγμα αυτό θα ήταν μια συνάρτηση που δέχεται μια array από bytes της αφιλτράριστης εικόνας και θα επέστρεφε πάλι μια array από bytes της φιλτραρισμένης εικόνας.
Στο πρώτο σκέλος η απάντηση είναι εύκολη:φτιάξε ένα file listbox,βάλε ως directory τον φάκελο με τα plugin σου και βάλε wildcard του τύπου "*.dll".
Το δεύτερο σκέλος σου δίνει αρκετές επιλογές ανάλογα με το τι είδους dlls θα έχεις.ActiveX;Τότε πρέπει να τα εγκαταστήσεις με το regsvr32 και να καλέσεις την GetObject .Είναι COM Interfaces;Πάλι εύκολο να τα φορτώσεις αλλά θα πρέπει να τα δημιουργήσεις με άλλη γλώσσα,κατά προτίμηση C++.Είναι κανονικά dll;Τότε θα πρέπει να καταφύγεις στις συναρτήσεις του Windows API
LoadLibrary,
GetProcAddress και
SetDllDirectory .Όμως τόσο τα dlls όσο και ο κώδικας που τα διαβάζει πρέπει να φτιαχτούν με άλλη γλώσσα μια που η VB6 δεν υποστηρίζει function pointers.Αν και υπάρχει ένα ωραίο
άρθρο επί του θέματος που κάνει δυνατή τη χρήση τους από αυτήν (με μια καλή δόση assembly).Τέλος υπάρχει και η πιθανότητα να χρησιμοποιήσεις class libraries από την VB.NET και να χρησιμοποιήσεις COM interop για να το φορτώσεις στην VB6 φόρμα σου αλλά δεν έχω ιδέα αν αυτό γίνεται δυναμικά.Φυσικά όποια λύση και να ακολουθήσεις είναι απαραίτητο όλα τα plugins να χρησιμοποιούν τις ίδιες κλάσεις-συναρτήσεις-interfaces.
Αυτά και ελπίζω να σου έδωσα κάποια στοιχεία για να ξεκινήσεις.