Avec VB 6, on peut compiler des dlls COM, mais je crois avoir vu quelquepart
qu'il etait possible avec d'autres outils de compiler des dlls non COM, un
peu comme les dlls de base en C.
Pourriez vous m'indiquer le nom des outils permettant cela?
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
François Picalausa
Hello,
Ces DLL contiendront toujours du code de composant COM mais, il y a moyen d'en bloquer les fonctions qui rendent la dll COM et d'exporter d'autres fonctions.
On va commencer par le simple export de fonctions. Pour celà, il faut créer dans ton projet un module (.bas) contenant la fonction que tu veux exporter, remplacer le linker par un autre linker qui changera la ligne de comande reçus par une autre avant d'appeler le linker original pour exporter les fonctions voulues. Ca c'est la partie simple... Il faut savoir que la runtime VB doit être initialisée avant de pouvoir appeler des fonctions VB. Cet appel est réalisé habituellement lorsque l'on demande une interface COM à la dll (procédure DllGetClassObject). Il faudra donc réaliser l'appel à cette fonction pour retrouver une interface permettant de maintenir le runtime en vie pendant que les autres fonctions s'exécutent. De préférence, on fera cet appel dans le DllMain. Cet appel ne pourra être réalisé que par API (ce serait trop simple sinon!) et donc, pour l'exécuter proprement, il faudra prévoir une fonction qui pourra appeler un pointeur vers une fonction. Pour appeler une fonction, on peut utiliser du code asm dans une variable qui sera exécutée: http://www.fawcette.com/archives/premier/mgznarch/vbpj/2000/02feb00/mc0200/mc0200.asp J'ai malheureusement peur avec Windows XP SP2 et le marquage de zone mémoire comme étant données ou exécutable que ça ne fonctionne plus! Tu pourrais donc créer un module standard contenant des pseudo fonctions d'appel de dll et remplacer le fichier .obj généré à la compilation par un autre fichier obj provenant de c/asm.
Si tu veux, j'ai quelques débuts d'exemples que je pourrais t'envoyer par mail.... Mais il existe aussi une méthode plus simple qui s'apelle vbAdvance: http://www.vbadvance.com/
-- François Picalausa (MVP VB) http://faq.vb.free.fr --- http://msdn.microsoft.com http://apisvb.europe.webmatrixhosting.net
"Jérôme VERITE" a écrit dans le message de news:%23K$6$
Avec VB 6, on peut compiler des dlls COM, mais je crois avoir vu quelquepart qu'il etait possible avec d'autres outils de compiler des dlls non COM, un peu comme les dlls de base en C.
Pourriez vous m'indiquer le nom des outils permettant cela?
Hello,
Ces DLL contiendront toujours du code de composant COM mais, il y a moyen
d'en bloquer les fonctions qui rendent la dll COM et d'exporter d'autres
fonctions.
On va commencer par le simple export de fonctions.
Pour celà, il faut créer dans ton projet un module (.bas) contenant la
fonction que tu veux exporter, remplacer le linker par un autre linker qui
changera la ligne de comande reçus par une autre avant d'appeler le linker
original pour exporter les fonctions voulues.
Ca c'est la partie simple...
Il faut savoir que la runtime VB doit être initialisée avant de pouvoir
appeler des fonctions VB. Cet appel est réalisé habituellement lorsque l'on
demande une interface COM à la dll (procédure DllGetClassObject). Il faudra
donc réaliser l'appel à cette fonction pour retrouver une interface
permettant de maintenir le runtime en vie pendant que les autres fonctions
s'exécutent. De préférence, on fera cet appel dans le DllMain. Cet appel ne
pourra être réalisé que par API (ce serait trop simple sinon!) et donc, pour
l'exécuter proprement, il faudra prévoir une fonction qui pourra appeler un
pointeur vers une fonction.
Pour appeler une fonction, on peut utiliser du code asm dans une variable
qui sera exécutée:
http://www.fawcette.com/archives/premier/mgznarch/vbpj/2000/02feb00/mc0200/mc0200.asp
J'ai malheureusement peur avec Windows XP SP2 et le marquage de zone mémoire
comme étant données ou exécutable que ça ne fonctionne plus!
Tu pourrais donc créer un module standard contenant des pseudo fonctions
d'appel de dll et remplacer le fichier .obj généré à la compilation par un
autre fichier obj provenant de c/asm.
Si tu veux, j'ai quelques débuts d'exemples que je pourrais t'envoyer par
mail....
Mais il existe aussi une méthode plus simple qui s'apelle vbAdvance:
http://www.vbadvance.com/
--
François Picalausa (MVP VB)
http://faq.vb.free.fr --- http://msdn.microsoft.com
http://apisvb.europe.webmatrixhosting.net
"Jérôme VERITE" <veritejeromeSPAM@wanadoo.fr> a écrit dans le message
de news:%23K$6$Q6eEHA.3028@TK2MSFTNGP12.phx.gbl
Avec VB 6, on peut compiler des dlls COM, mais je crois avoir vu
quelquepart qu'il etait possible avec d'autres outils de compiler des
dlls non COM, un peu comme les dlls de base en C.
Pourriez vous m'indiquer le nom des outils permettant cela?
Ces DLL contiendront toujours du code de composant COM mais, il y a moyen d'en bloquer les fonctions qui rendent la dll COM et d'exporter d'autres fonctions.
On va commencer par le simple export de fonctions. Pour celà, il faut créer dans ton projet un module (.bas) contenant la fonction que tu veux exporter, remplacer le linker par un autre linker qui changera la ligne de comande reçus par une autre avant d'appeler le linker original pour exporter les fonctions voulues. Ca c'est la partie simple... Il faut savoir que la runtime VB doit être initialisée avant de pouvoir appeler des fonctions VB. Cet appel est réalisé habituellement lorsque l'on demande une interface COM à la dll (procédure DllGetClassObject). Il faudra donc réaliser l'appel à cette fonction pour retrouver une interface permettant de maintenir le runtime en vie pendant que les autres fonctions s'exécutent. De préférence, on fera cet appel dans le DllMain. Cet appel ne pourra être réalisé que par API (ce serait trop simple sinon!) et donc, pour l'exécuter proprement, il faudra prévoir une fonction qui pourra appeler un pointeur vers une fonction. Pour appeler une fonction, on peut utiliser du code asm dans une variable qui sera exécutée: http://www.fawcette.com/archives/premier/mgznarch/vbpj/2000/02feb00/mc0200/mc0200.asp J'ai malheureusement peur avec Windows XP SP2 et le marquage de zone mémoire comme étant données ou exécutable que ça ne fonctionne plus! Tu pourrais donc créer un module standard contenant des pseudo fonctions d'appel de dll et remplacer le fichier .obj généré à la compilation par un autre fichier obj provenant de c/asm.
Si tu veux, j'ai quelques débuts d'exemples que je pourrais t'envoyer par mail.... Mais il existe aussi une méthode plus simple qui s'apelle vbAdvance: http://www.vbadvance.com/
-- François Picalausa (MVP VB) http://faq.vb.free.fr --- http://msdn.microsoft.com http://apisvb.europe.webmatrixhosting.net
"Jérôme VERITE" a écrit dans le message de news:%23K$6$
Avec VB 6, on peut compiler des dlls COM, mais je crois avoir vu quelquepart qu'il etait possible avec d'autres outils de compiler des dlls non COM, un peu comme les dlls de base en C.
Pourriez vous m'indiquer le nom des outils permettant cela?