Dll

Résolu
draluorg Messages postés 625 Date d'inscription vendredi 23 avril 2004 Statut Membre Dernière intervention 25 novembre 2010 - 31 mai 2006 à 12:59
draluorg Messages postés 625 Date d'inscription vendredi 23 avril 2004 Statut Membre Dernière intervention 25 novembre 2010 - 31 mai 2006 à 16:09
Salut a tous,

Je code en vb6, et j'aimerai me faire une dll en C++ pour l'appeler depuis un soft vb6 comme on fait appel a une api Windows

Cette dll doit contenir une procedure qui lance un processus dont le fichier est passe en argument...

J'utilise DevC++ merci d'avance pour votre aide

++

Quand on pose une question on est con 5 minutes,
Quand on ne la pose pas on le reste toute sa vie...

8 réponses

nightlord666 Messages postés 746 Date d'inscription vendredi 17 juin 2005 Statut Membre Dernière intervention 23 mai 2007 10
31 mai 2006 à 13:34
Met ce code dans un fichier .cpp

#include <windows.h>

BOOL WINAPI DllMain(HINSTANCE, DWORD, LPVOID)
{
    return TRUE;
}

VOID __declspec(dllexport) LaunchProcess(char* szProcessName)
{
    //Mettre içi le code pour lancer le processus, je ne me souviens plus de la syntaxe exacte de la fonction CreateProcess...
}
3
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
31 mai 2006 à 15:27
C'est que ta fonction est exporté en C++ et tu doit probablement l'appeler en C donc essais de déclarer ta fonction comme ceci:

extern "C" VOID __declspec(dllexport) LaunchProcess(char* szProcessName)

___________________________________________
Les plus grands esprits trouvent toujours une solution
3
nightlord666 Messages postés 746 Date d'inscription vendredi 17 juin 2005 Statut Membre Dernière intervention 23 mai 2007 10
31 mai 2006 à 15:51
Essaie extern "C" VOID __declspec(dllexport) WINAPI LaunchProcess(char* szProcessName)
3
draluorg Messages postés 625 Date d'inscription vendredi 23 avril 2004 Statut Membre Dernière intervention 25 novembre 2010
31 mai 2006 à 14:32
Salut nightLord666,

Merci, ca me donne donc ceci:

#include <windows.h>
BOOL WINAPI DllMain(HINSTANCE, DWORD, LPVOID)
{
    return TRUE;
}



VOID __declspec(dllexport) LaunchProcess(char* szProcessName)
{
  


STARTUPINFO         siStartupInfo;
PROCESS_INFORMATION piProcessInfo;



memset(&siStartupInfo, 0, sizeof(siStartupInfo));
memset(&piProcessInfo, 0, sizeof(piProcessInfo));
siStartupInfo.cb = sizeof(siStartupInfo);
if(CreateProcess(NULL,szProcessName,0,0,FALSE,
                     CREATE_DEFAULT_ERROR_MODE,0,0,                             
                     &siStartupInfo,&piProcessInfo) == FALSE)
{
// erreur
}


Est-ce que c'est bien juste ?
Si oui j'ai pas trop bien compris ou le mettre, je cree un nouveau projet dll, et il me cree un fichier dllmain + un fichier dll.h si j'ajoute ce code au projet et que je compile, tout ce passe bien, mais lorsque j'essai d'appeler la fonction, je recois l'erreur "cant file entry point in dll..."

Encore mrci
++

Quand on pose une question on est con 5 minutes,
Quand on ne la pose pas on le reste toute sa vie...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
nightlord666 Messages postés 746 Date d'inscription vendredi 17 juin 2005 Statut Membre Dernière intervention 23 mai 2007 10
31 mai 2006 à 15:30
A la limite, moi je n'aurais pas créé une DLL pour ça : j'aurais directement importé CreateProcess de kernel32.dll dans le programme VB, et j'aurais utilisé la fonction CreateProcess directement dans le code VB.
0
draluorg Messages postés 625 Date d'inscription vendredi 23 avril 2004 Statut Membre Dernière intervention 25 novembre 2010
31 mai 2006 à 15:49
Re,

Merci SAKingdom, ca marche ^^ mais je recois un bad dll convention apres l'execution du processus :( 

nightLord666 > Eh oui evidament, ce serait bien plus simple, mais ici CreateProcess est un exemple, pour bien comprendre comment faire, le but est de creer une dll que je puisse faire utiliser a un autre processus, via CreateRemonteThread, et vb6 ne permet pas de faire de dll :(

Merci beaucoup
++

Quand on pose une question on est con 5 minutes,
Quand on ne la pose pas on le reste toute sa vie...
0
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
31 mai 2006 à 15:55
ichhh c'est risqué car il risque de ne plus pouvoir appeller ses fonctions correctement encore une fois.

___________________________________________
Les plus grands esprits trouvent toujours une solution
0
draluorg Messages postés 625 Date d'inscription vendredi 23 avril 2004 Statut Membre Dernière intervention 25 novembre 2010
31 mai 2006 à 16:09
re,

Eh apparement ca marche impec maintenant :)

je vais voir si ca marche via CreateRemoteThread...

encore merci a tous les deux vous m'avez vraiment bien aide :)

++

Quand on pose une question on est con 5 minutes,
Quand on ne la pose pas on le reste toute sa vie...
0
Rejoignez-nous