AJOUTEZ DES PLUGINS DANS VOTRE PROGRAMME

supermotaboy Messages postés 65 Date d'inscription mercredi 26 février 2003 Statut Membre Dernière intervention 14 décembre 2005 - 8 déc. 2005 à 18:05
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 - 30 sept. 2007 à 10:39
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/34980-ajoutez-des-plugins-dans-votre-programme

Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
30 sept. 2007 à 10:39
Pour juste un appel, tu peux utiliser un evenement dans ton plugin
DblK Messages postés 51 Date d'inscription vendredi 30 janvier 2004 Statut Membre Dernière intervention 2 octobre 2008
29 sept. 2007 à 14:44
Une dernière petite question, j'ai testé et implémenté correctement dans un nouveau projet.
Par contre je me heurte à un problème je n'arrive pas à appeler des fonctions et/ou procédure du projet principal à partir de la DLL et cela me gêne dans l'utilité des plugins.
Il y a-t-il un moyen d'y arriver où est-ce impossible, sachant que la procédure que je veux appeler à des paramètres ?

Si je ne suis pas assez clair, contacte moi par MP pour plus de précision.

Merci d'avance
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
23 mai 2007 à 16:40
Je ne pense pas que la limitation doit en dur...

je pense que si le systeme n'a plus de handle de libre pour le hLib, il te sera impossible de charger ta dll. ce qui fait tout de même un bon paquet de handle. Si je ne me trompes pas, les handle sont propres a ton thread, donc, d'ici a ce que tu dépasse ton stock de handle....
DblK Messages postés 51 Date d'inscription vendredi 30 janvier 2004 Statut Membre Dernière intervention 2 octobre 2008
23 mai 2007 à 15:44
Super, c'est exactement ce que je cherchais !!
Mais j'ai une petite question, n'y a-t-il pas une limitation du nombre de plug-ins ?
Il me semble que windows n'accepte qu'on ne charge qu'un certain nombre de dll (un nombre trivial, sans doute 255).
Donc sachant que windows en prends quelques un au chargement, peut-on trouver le nombre de dll possible a chargé et le cas échéant lors du lancement de l'application dire s'il y a trop de plug-ins, et donc en charger qu'un certain nombre ?

Comment sauter cette protection ? Si on veut avoir 1000 plug-ins par exemple ?
Je sais que c'est un gros nombre, mais c'est juste pour savoir si et comment c'est possible !
Dans le cas d'un logiciel de dessins, et que chaque plugins serait un nouvel effet (nuage, blur, etc...)


NB : 10/10 au passage
cs_Defaite Messages postés 60 Date d'inscription jeudi 9 décembre 2004 Statut Membre Dernière intervention 10 mai 2007
30 avril 2006 à 11:36
10/10 ! Rien à dire, géniale !
cs_nico1610 Messages postés 395 Date d'inscription jeudi 26 août 2004 Statut Membre Dernière intervention 19 juin 2009 1
17 mars 2006 à 19:06
Merci Renfield mais tu t'es fait battre de vitesse par PCPT !!
Lol , c'est bien ca mon erreur, j'avais pourtant la solution devant le yeux depuis longtemps avec tes OCX, mais je n'est rien vu.
Enfin maintenant je suis au ange !!
Merci au admin pour leur reponce ttoujours aussi rapide, simple et précise !
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
17 mars 2006 à 17:44
StdPicture est de type Objet...
VB attend donc un petit Set :

Private Property Get IDrawingPlugin_Picture() As stdole.Picture
Set IDrawingPlugin_Picture = Form1.Picture
End Property
cs_nico1610 Messages postés 395 Date d'inscription jeudi 26 août 2004 Statut Membre Dernière intervention 19 juin 2009 1
17 mars 2006 à 16:48
On peut m'exliquer pourquoi quand je créer dans la dll des plug in une fonction ou propriété Picture as StdPicture
et que dans mon plugIn je met
Private Property Get IDrawingPlugin_Picture() As stdole.Picture
IDrawingPlugin_Picture = Form1.Picture
End Property
Il me sort : Utilisation de la propriété incorect !!
Ca fait trois jours que je trim !! A L'AIDE !!
MadM@tt Messages postés 2167 Date d'inscription mardi 11 novembre 2003 Statut Membre Dernière intervention 16 juillet 2009 1
12 févr. 2006 à 05:57
Merci pour ta réponse, j'ai regardé le contenu de ton code et essayé de l'appliquer aux ocx, mais je n'ai pas réussi (je n'ai pas beaucoup essayé, j'ai cherché d'autres codes). Et finalement j'ai trouvé, avec Form1.Controls.Add(..) et ça marche. Enfin je ne doute pas qu'avec ta source ça marche aussi bien sur ;)
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
11 févr. 2006 à 22:17
euh... c'est exactement pareil...
MadM@tt Messages postés 2167 Date d'inscription mardi 11 novembre 2003 Statut Membre Dernière intervention 16 juillet 2009 1
11 févr. 2006 à 14:42
Salut et bravo pour ce super code,
par contre j'ai un petit problème, comment faire la meme chose mais avec des ocx (car ton programme ne gère que des dll) ?
est-ce possible déjà ? et comment procéder?
Si quelqu'un a une idée je le remercie d'avance.
SgtKabukinan Messages postés 106 Date d'inscription lundi 20 septembre 2004 Statut Membre Dernière intervention 23 janvier 2010
18 janv. 2006 à 16:22
AMEN !!
@supermotaboy > je le fait pour toi !
allez 10/10
bravo renfield
cs_Tankian33 Messages postés 18 Date d'inscription mercredi 27 octobre 2004 Statut Membre Dernière intervention 29 juin 2007
15 déc. 2005 à 18:58
EXELENT ! Absolument geniale. Tres bien explique et bien code 10/10 et surtout tres interessant
supermotaboy Messages postés 65 Date d'inscription mercredi 26 février 2003 Statut Membre Dernière intervention 14 décembre 2005
14 déc. 2005 à 21:08
ok merci!! C'est bien pratique toute cette histoire dis donc!!! Je serais tenté de renotté une deuxieme fois ^^
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
14 déc. 2005 à 20:45
tu es parfaitement libre, dans l'implémentation, etc...

seule contrainte : respecter l'interface, garantissant que le programme principal sache manipuler, et interagir avec le plugin
supermotaboy Messages postés 65 Date d'inscription mercredi 26 février 2003 Statut Membre Dernière intervention 14 décembre 2005
14 déc. 2005 à 19:52
Je voudrais savoir un ptit truc, concernant la structure des plugins : en fait on doit juste respecter la structure dans le module de classe, mais le reste, on peut en faire ce qu'on veut nan? j'ai testé de rajouter une fenetre d'options dans les plugins et ça marche sans problème, donc je suppose que oui?
merci en tout cas, l'est vraiment bien cette source!!! :D
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
9 déc. 2005 à 01:54
source mise a jour intégrant maintenant un plugin de test, illustrant une manière possible de debugger
supermotaboy Messages postés 65 Date d'inscription mercredi 26 février 2003 Statut Membre Dernière intervention 14 décembre 2005
8 déc. 2005 à 21:06
ok merci pour ces reponses je vais essayer de voir comment j arrive a m'en sortir!!! En tout cas j'ai deja reflechi un peu et cette source va bien m'aider!!
Encore MERCI!! :D
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
8 déc. 2005 à 19:52
Pensez bien a effectuer les modification de l'interface(méthode, propriétés) dans l'interface (IDrawingPlugin)

je vais modifier la source pour illustrer comment débugger.
(l faut placer la classe du plugin dans le programme principal)

si tu as des variables (lecture/ecriture) a faire 'passer', tu peux utiliser une variable déclarée en public dans l'interface, et dans la classe.

il est faisable d'invoquer des fonctions de ton projet principal...
il est possible de les placer dans la dll intermédiaire (celle qui contient la déclaration de l'interface).
Ca n'est pas la seule solution, mais une voie a explorer...

la dll 'tampon' serait finallement le coeur de métier de ton application, celle-ci n'etant au final plus que la partie interface utilisateur...
supermotaboy Messages postés 65 Date d'inscription mercredi 26 février 2003 Statut Membre Dernière intervention 14 décembre 2005
8 déc. 2005 à 19:34
Par contre, si je veux faire passer des variables, le seul moyen est que j'utilise Property_Let? Et comment faire pour que la dll puisse exécuter des fonctions du projet principal (même via un intermediaire eventuellement le principal etant qu'elle l execute). J'aurais egalement une autre question concernant le devellopement de ces dll : comment faire pour les débugger???
merci ++

LTourist
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
8 déc. 2005 à 19:01
On en rêvait, Renfield l'a fait !
Oh que je suis content de voir fonctionner cette appli !
Depuis le temps que je me disais qu'il allait falloir que je me penche sur le sujet (sans avoir le temps, comme d'hab).
Super. Je vais pouvoir revoir mon système d'update de mes applis !
Merci Rey !
supermotaboy Messages postés 65 Date d'inscription mercredi 26 février 2003 Statut Membre Dernière intervention 14 décembre 2005
8 déc. 2005 à 18:05
Tres bonne source, avec de bons commentaire et un code clair, comme d'habitude de la part de Renfield. Cette façon de procéder est de plus la meilleure que j'ai vu sur ce thème, et de loin.
Bravo!!!
Rejoignez-nous