begin process at 2012 02 10 19:28:50
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

Appeler une fonction VB à partir de C++


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Appeler une fonction VB à partir de C++

mardi 7 décembre 2004 à 09:10:03 | Appeler une fonction VB à partir de C++

doggyk



Bonjour à tous!

Voilà, je souhaiterais appeler une fonction VB à partir d'une DLL C++ (appelée auparavant par mon prog VB).
En gros:
Démarrage du prog Y en Visual Basic qui Appelle la fonction X appartenant à la DLL Z
Puis, au cours de son éxécution la Fonction X de la Dll Z appelle la fonction W du prog Y.
Je sais pas si c'est très clair...

Bon, d'après mes premières investigations il y aurait peut-être une possibilité en envoyant à ma Dll l'adresse de la fonction à rappeler grâce à l'operateur AddressOf de VB.
Le truc, c'est que j'ai lu cela, j'arrive à l'utiliser dans VB, mais j'ai pas trouvé d'exemples montrant comment le C++ se sert de l'adresse de cette fonction pour la rappeler.

Mon problème se situe donc juste à appeler la fonction VB à partir de C++.

Si quelqu'un a déjà eu à faire ce genre de bidouille je serais interressé par son aide!

Merci d'avance.

Doggyk.
mardi 7 décembre 2004 à 12:31:03 | Re : Appeler une fonction VB à partir de C++

Nebula

Membre Club
Aucune idée, à mon avis le forum VB serait plus approprié pour cette question. Sinon vu son nom AdressOf devrait convenir, mais je ne garantis rien...
mardi 7 décembre 2004 à 13:24:37 | Re : Appeler une fonction VB à partir de C++

BruNews

Administrateur CodeS-SourceS
long (__stdcall *pFuncVb)(int*, int*);
*(FARPROC *)&pFuncVb = addressOfVb;

ceci pour une func VB genre:
MaFunc(a As Long, b As Long) As Long
avec les 2 params ByRef comme d'hab en VB.

ciao...
BruNews, MVP VC++
lundi 13 décembre 2004 à 10:46:56 | Re : Appeler une fonction VB à partir de C++

doggyk

Salut!
Merci pour ta réponse mais j'avoue ne pas réussir à la mettre en oeuvre totalement car j'ai un message d'erreur sur les conversions long to int qui apparaît.
Plus précisément, voici un extrait des fonctions que j'utilise.
Si tu as 2 minutes pour me conseiller....
Merci d'avance!


Fichier principal VB:

Private Declare Sub numerisation Lib "numerisation.dll" (AdresseFonction As Long, seuil As Integer)

Private Sub Command1_Click()
numerisation AddressOf Analyse, 200
End Sub

Le module .bas:
Public function Analyse(x As Integer, y As Integer)
MsgBox "ok, ca marche! x=" & x & " y=" & y 'histoire de tester...
' .......
Analyse=1
End function


La partie importante de ma Dll:

extern "C" __declspec(dllexport) void numerisation(long& Adresse,int& seuil )
{
//.................
//long ( __stdcall *pFuncVb)(int* x,int* y);
//*(FARPROC *)&pFuncVb=Adresse;
//Je veux donc appeler Analyse en envoyant x=3 et y=5 par exemple et avoir le retour...
}
lundi 13 décembre 2004 à 11:00:15 | Re : Appeler une fonction VB à partir de C++

BruNews

Administrateur CodeS-SourceS
bouhhh pour moi, comme d'hab j'ai repondu un peu vite en faisant autre chose.

long (__stdcall *pFuncVb)(int, int);
*(FARPROC *)&pFuncVb = addressOfVb;
les
params par valeur et NON des pointeurs. Si tu as besoin de pointeurs c'est possible aussi.

Les params chez VB pour une callback ou en appel d'une func DLL ne doivent jamais etre 'As Integer' car fait 16 bits, emploie toujours du 'Long' VB.

ciao...
BruNews, MVP VC++
mercredi 15 décembre 2004 à 14:29:11 | Re : Appeler une fonction VB à partir de C++

doggyk


Re-salut!
J'arrive vraiment pas...
La partie VB fonctionne (suite aux conseils j'ai fais attention à mettre du long), l'appel à la DLL aussi (j'ai essayé sans le rappel) mais, le rappel...
Ca compile pas!
Dans chaque cas, j'ai un message(ou du même genre) sur la ligne A:

cannot convert from 'int' to 'int (__stdcall *)(int,int)'
Conversion from integral type to pointer type requires reinterpret_cast, C-style cast or function-style cast

J'ai essayé les différentes méthodes:

//extern "C" __declspec(dllexport) void numerisation(int Adresse,int seuil ) //ou...
//extern "C" __declspec(dllexport) __stdcall void numerisation(int *Adresse,int seuil ) //ou...
extern "C" __declspec(dllexport) __stdcall void numerisation(int Adresse,int seuil )
{
int ( __stdcall *pFuncVb)(int x,int y);

//pFuncVb=Adresse; //A //ou...
//*(FARPROC *)&pFuncVb = Adresse; //A

int ret = pFuncVb(3,5);
}

Une idée ou conseil??...
A+.
Doggyk.



Cette discussion est classée dans : fonction, vb, partir, dll, appeler


Répondre à ce message

Sujets en rapport avec ce message

Dll vc++ [ par MoDDiB ] J'ai cherché des sources sur les dlls et je n'ai trouvé que des moyens de lancer des fonction de la dll a partir de lexe.Mais je me doute qu'il doit e appeler une fonction depuis une dll [ par pichu ] bonjour, je voudrais savoir comment il pourrait être possible depuis une dll, d'apeler une fonction public de l'application ayant appelé cette même dl Trouver une dll à partir du nom de la fonction [ par Cako19 ] Bonjour,Est ce que quelqu'un saurait comment on peut retrouver, à partir d'une fonction décrite dans l'aide de Microsoft, la dll à laquelle la fonctio Appel de fonction VB a partir de C++ [ par sekatirex ] bonjour, jvoudrai savoir si on peu appeler un fonction ou program écrit en VB5 a a partir d'une programme en C++.! Appel de fonction VB a partir de C++ [ par sekatirex ] car en fet je voudra fer un programme ki utile deux otre programme dont 1 en c++ et lotre en VB!en c++ c un programm de dessin et en vb un ocr !en mél Comment appeler une méthode d'une classe d'une DLL VB [ par Boblastic ] Bonjour,J'ai beau chercher, je ne trouve pas de solution.Mon problème est le suivant : je ne sais pas comment faire en C++ pour appeler une méthode d' dll [ par wasaikos ] salut à tous,j'ai une grande question!!j'aimerais savoir comment appeler une fonction membre d'une classe d'une dll.j'utilise windev 11 et le problème importer une fonction d'un exe [ par Kian_ix ] salut je cherche un moyen d'importer une fonction a partir d'un fichier .exe comme on pourrait le faire a partir d'un fichier .dll, par exemple: PROC appeler une fonction c++ contenu dans dll avec de code c++ [ par avg ] j'ai une fonction qui est sous une class dans un dll déclarer comme ce ci : [code=cpp]C_MORPHO_User::C_MORPHO_User()[/code] j'ai appeler dll avec Load comiler une dll à partir d'une lib [ par Zayann ] Bonjour. La question va peut-être vous paraître idiote mais est-il possible de compiler une dll à partir d'un .lib et du .h correspondant ? J'ai récu


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,576 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales