Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

AJOUTEZ DES PLUGINS DANS VOTRE PROGRAMME


Information sur la source

Catégorie :Divers Classé sous : plugin, addin, tutoriel, extfloodfill, cours Niveau : Débutant Date de création : 08/12/2005 Date de mise à jour : 09/12/2005 01:53:20 Vu / téléchargé: 6 637 / 1 263

Note :
9,78 / 10 - par 9 personnes
9,78 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (22)
Ajouter un commentaire et/ou une note


Description

Cliquez pour voir la capture en taille normale
Bonjour,

Je vous propose ici un 'cours' qui illustre l'ajout de plugins dans votre application.
Ce n'est ici qu'un des moyens qui existent d'y parvenir.

Vous trouverez un mini editeur d'image, utilisant des plugins pour fournir ses outils de dessin.

Les plugins sont des Dll COM. Elles sont enregistrées au chargement de l'appli, et dechargées à sa fermeture.

vous trouverez également une classe, dans le projet principal, qui montre comment integrer vos plugins, a ceux existant, et pouvoir les debugger
 

Conclusion

Attention, veillez à bien enregistrer (via RegSvr32) la dll .\Environment\MyPaint_IDrawingPlugin.dll
 

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

Historique

09 décembre 2005 01:53:20 :
Ajout d'une classe test, illustrant l'integration a la liste de plugins, et le debogage des plugins

Commentaires et avis

signaler à un administrateur
Commentaire de supermotaboy le 08/12/2005 18:05:24

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!!!

signaler à un administrateur
Commentaire de jack le 08/12/2005 19:01:35 administrateur CS

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 !

signaler à un administrateur
Commentaire de supermotaboy le 08/12/2005 19:34:31

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

signaler à un administrateur
Commentaire de Renfield le 08/12/2005 19:52:42 administrateur CS

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...

signaler à un administrateur
Commentaire de supermotaboy le 08/12/2005 21:06:43

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

signaler à un administrateur
Commentaire de Renfield le 09/12/2005 01:54:09 administrateur CS

source mise a jour intégrant maintenant un plugin de test, illustrant une manière possible de debugger

signaler à un administrateur
Commentaire de supermotaboy le 14/12/2005 19:52:29

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

signaler à un administrateur
Commentaire de Renfield le 14/12/2005 20:45:32 administrateur CS

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

signaler à un administrateur
Commentaire de supermotaboy le 14/12/2005 21:08:54

ok merci!! C'est bien pratique toute cette histoire dis donc!!! Je serais tenté de renotté une deuxieme fois ^^

signaler à un administrateur
Commentaire de Tankian33 le 15/12/2005 18:58:54

EXELENT ! Absolument geniale. Tres bien explique et bien code 10/10 et surtout tres interessant

signaler à un administrateur
Commentaire de SgtKabukinan le 18/01/2006 16:22:55

AMEN !!
@supermotaboy >  je le fait pour toi !
allez 10/10
bravo renfield

signaler à un administrateur
Commentaire de MadM@tt le 11/02/2006 14:42:34

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.

signaler à un administrateur
Commentaire de Renfield le 11/02/2006 22:17:49 administrateur CS

euh... c'est exactement pareil...

signaler à un administrateur
Commentaire de MadM@tt le 12/02/2006 05:57:38

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 ;)

signaler à un administrateur
Commentaire de nico1610 le 17/03/2006 16:48:36

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 !!

signaler à un administrateur
Commentaire de Renfield le 17/03/2006 17:44:34 administrateur CS

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

signaler à un administrateur
Commentaire de nico1610 le 17/03/2006 19:06:17

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 !

signaler à un administrateur
Commentaire de Defaite le 30/04/2006 11:36:04

10/10 ! Rien à dire, géniale !

signaler à un administrateur
Commentaire de DblK le 23/05/2007 15:44:24

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

signaler à un administrateur
Commentaire de Renfield le 23/05/2007 16:40:19 administrateur CS

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....

signaler à un administrateur
Commentaire de DblK le 29/09/2007 14:44:03

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

signaler à un administrateur
Commentaire de Renfield le 30/09/2007 10:39:51 administrateur CS

Pour juste un appel, tu peux utiliser un evenement dans ton plugin

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

Adresse en cours sur Explorer!!! [ par Le J ] Salut,Comment faire pour trouver l'adresse en cours sur internet Explorer ou Netscape??MerciALPLe J COURS VB... [ par PAT ] Saluts chers collègues amateurs de VB,JE vien de découvrir vb et je souhaite suivre un cours avancé et sérieux. qui aurait des adresses?Merci Connaitre le provider en cours de connection [ par Julien ] J'ai déja réussi à détecter la connection internet, mais je voudrai savoir avec quel provider la connection est en cours (ex : libertysurf ou waika9) résolution affichage en cours? [ par Nico ] Je souhaite récupérer la résolution de l'affichage en cours WinNT4.0.par le biais d'une fonction de l'API?C'est pour une application en Access97, donc Comment trouver l'ID de l'application en cours?? [ par def ] Bonjour,Dans mon programme, je veux recuperer l'ID du processus de celui ci, comment faire ??Merci d'avance Cherche cours de V.B. [ par darkprog ] J'entame une formation en vb ce lundi et je voudrais trouver un cours TELECHARGEABLE de vb ,ki peut m'aider ??merçi Recherche un programme detectant le plugin FLASH [ par pedro ] Bonjour,Je recherche un programme (fiable)soit en javascript, soit en vbscript detectant le plugin FLASH et renvoyant un valeur booleenne.En effet ce Comment connaitre en cours d'execution les propriétés d'un objet quelconque ? [ par Alex B ] Comment connaitre en cours d'execution les propriétés d'un objet quelconque ? Je m'explique : Au cours de l'exécution de mon application, une de mes v synchro du DD avec fichier en cours de modif [ par OCh ] Je mets a jour un fichier de log avectout ce qui se passe dans mon application.Ce fichier reste donc ouvert tant que mon application tourne.Ce qui fai L'ecran de l'état des impression en cours ? [ par celiphane ] Salut,voilà mon problème :je suis en train de réaliser un programme pour restreindre l'accès à des applications choisies sur les ordinateur d'un lycée


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 1,232 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.