IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB 6 et antérieur Discussion :

[VB6] Equivalance VB.Net -> VB6


Sujet :

VB 6 et antérieur

  1. #1
    Membre du Club Avatar de Cirdan Telemnar
    Profil pro
    Étudiant
    Inscrit en
    Avril 2006
    Messages
    130
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2006
    Messages : 130
    Points : 69
    Points
    69
    Par défaut [VB6] Equivalance VB.Net -> VB6
    je sais ce n'ai pas logique de faire du VB6 apres du VB.Net mais on choisi pas ce que l'on veux faire

    voila j'ai une importation de fonction de dll en VB.NET comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <DllImport("Madll.dll", EntryPoint:="_Mafonction@0")> _
        Public Function Mafonction( _
            <InAttribute()> ByVal Arg1 As String, _
            <OutAttribute()> ByVal Arg2 As IntPtr, _
            <OutAttribute()> ByRef Arg3 As Integer) As Boolean
        End Function
    qui peut me dire ce qui colle pas dans ma traduction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Public Declare Function Mafonction Lib "Madll.dll" Alias "_Mafonction@0" ( _
        ByVal Arg1 As String, _
        ByVal Arg2 As String, _
        ByRef Arg3 As Integer) As Boolean

  2. #2
    Expert éminent
    Avatar de ThierryAIM
    Homme Profil pro
    Inscrit en
    Septembre 2002
    Messages
    3 673
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2002
    Messages : 3 673
    Points : 8 524
    Points
    8 524
    Par défaut
    Citation Envoyé par Cirdan Telemnar
    je sais ce n'ai pas logique de faire du VB6 apres du VB.Net mais on choisi pas ce que l'on veux faire

    voila j'ai une importation de fonction de dll en VB.NET comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <DllImport("Madll.dll", EntryPoint:="_Mafonction@0")> _
        Public Function Mafonction( _
            <InAttribute()> ByVal Arg1 As String, _
            <OutAttribute()> ByVal Arg2 As IntPtr, _
            <OutAttribute()> ByRef Arg3 As Integer) As Boolean
        End Function
    qui peut me dire ce qui colle pas dans ma traduction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Public Declare Function Mafonction Lib "Madll.dll" Alias "_Mafonction@0" ( _
        ByVal Arg1 As String, _
        ByVal Arg2 As String, _
        ByRef Arg3 As Integer) As Boolean



    Si, en plus, on avait un peu plus de détails sur l'erreur, on ne s'en plaindrai pas
    Vous vous posez une question, la réponse est peut-être ici :
    Toutes les FAQs VB
    Les Cours et Tutoriels VB6/VBScript
    Les Sources VB6


    Je ne réponds pas aux questions techniques par MP. Utilisez les forums. Merci de votre compréhension

  3. #3
    Membre du Club Avatar de Cirdan Telemnar
    Profil pro
    Étudiant
    Inscrit en
    Avril 2006
    Messages
    130
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2006
    Messages : 130
    Points : 69
    Points
    69
    Par défaut
    je peux pas t'en donner plus le prog plante et c'est tous

  4. #4
    Membre du Club Avatar de Cirdan Telemnar
    Profil pro
    Étudiant
    Inscrit en
    Avril 2006
    Messages
    130
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2006
    Messages : 130
    Points : 69
    Points
    69
    Par défaut
    la fonction a l'origine en C++ c'est ca
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    BOOL Mafonction(char *Arg1, unsigned char *Arg2, long *Arg3)

  5. #5
    Membre du Club Avatar de Cirdan Telemnar
    Profil pro
    Étudiant
    Inscrit en
    Avril 2006
    Messages
    130
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2006
    Messages : 130
    Points : 69
    Points
    69
    Par défaut
    j'ai remplacer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ByVal Arg2 As String, _
    par
    mon programme plante toujour autant je sais pas d'ou ca peu venir

  6. #6
    Membre du Club Avatar de Cirdan Telemnar
    Profil pro
    Étudiant
    Inscrit en
    Avril 2006
    Messages
    130
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2006
    Messages : 130
    Points : 69
    Points
    69
    Par défaut
    en remettant le string et en lui passant VbNullString en paramètre
    j'ai ce message d'erreur qui apparais

    Run-time error '49'

    Bad DLL calling convention

  7. #7
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Points : 4 674
    Points
    4 674
    Par défaut
    <DllImport("Madll.dll", EntryPoint:="_Mafonction@0")> _
    Public Function Mafonction( _
    <InAttribute()> ByVal Arg1 As String, _
    <OutAttribute()> ByVal Arg2 As IntPtr, _
    <OutAttribute()> ByRef Arg3 As Integer) As Boolean
    End Function
    Tu dis que celà est écrit dans ton appli VB.NET.

    Edite alors le projet VB.NET, vois quand la fonction est appelée et, avant de l'exécuter fais un msgbox des paramètres que tu lui passes, pour voir ce qu'ils sont... et dis nous...
    Confirme-nous qu'à l'exécution, elle renvoie un True ou uin False.


    Es-tu enfin certain de ce que IntPtr ne serait pas une structure, qu'il te faudrait alors définir, bien évidemment...

  8. #8
    Membre du Club Avatar de Cirdan Telemnar
    Profil pro
    Étudiant
    Inscrit en
    Avril 2006
    Messages
    130
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2006
    Messages : 130
    Points : 69
    Points
    69
    Par défaut
    les paramètres sont comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Dim param1 As String
    Dim param2 As IntPtr
    Dim param3 As Integer
     
    param2 = IntPtr.Zero
    If (Mafonction(param1, param2, param3) = True) Then
            param2 = Marshal.AllocHGlobal(param3)
            If (Mafonction(param1, param2, param3) = True) Then...
    en fait j'appel un première fois ma fonction avec comme valeur a param2 "IntPtr.Zero" pour que param3 me donne la taille que je doit allouer et rappel ma fonction pour remplir la mémoire

  9. #9
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Points : 4 674
    Points
    4 674
    Par défaut
    param2 = IntPtr.Zero
    Ceci est pour moi très net :
    IntPtr est donc bien (je m'en doutais) une structure !

    Montre-nous donc cette structure indispensable et qui ne peut s'inventer.

  10. #10
    Membre du Club Avatar de Cirdan Telemnar
    Profil pro
    Étudiant
    Inscrit en
    Avril 2006
    Messages
    130
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2006
    Messages : 130
    Points : 69
    Points
    69
    Par défaut
    voila la structure de IntPtr donner par MSDN

    http://msdn2.microsoft.com/fr-fr/lib...r_members.aspx

  11. #11
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Points : 4 674
    Points
    4 674
    Par défaut
    Vu... et c'est pire !

    Car il s'agit là de pire qu'une structure : carrément un contrôle de VB.NET , contrêle qui a trois propriétés.

    Je ne vois dans ces conditions pas comment tu pourrais faire !

    Il te faut utiliser, dans un tel cas, d'autres DLL : toutes celles qu'utilise ce contrôle, pardi...

    Et... à moins de savoir exactement ce que tu fais.....

  12. #12
    Membre du Club Avatar de Cirdan Telemnar
    Profil pro
    Étudiant
    Inscrit en
    Avril 2006
    Messages
    130
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2006
    Messages : 130
    Points : 69
    Points
    69
    Par défaut
    j'ai trouver avec du mal mais j'ai trouver enfait ma déclaration est bonne mais c'est les options de compilation de ma dll qui ne sont pas bonne pour mon prog en VB6

    il faut en faite remplacer l'option de compilation "Calling convention = __cdecl*" par "__stdcall" tous simplement merci MSDN car trop dure a trouver dans l'aide

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. A ceux qui ont migré de VB6 vers VB.Net
    Par Fox dans le forum VB 6 et antérieur
    Réponses: 81
    Dernier message: 21/05/2008, 14h56
  2. [Migration .NET] Pourquoi VB6 à VB.NET ?
    Par estelledany dans le forum Général Dotnet
    Réponses: 5
    Dernier message: 01/06/2007, 18h58
  3. Appeler du vb.net en vb6 ?
    Par bguihal dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 23/09/2005, 10h44
  4. [VB6] Utiliser dll .Net dans VB6
    Par sokette dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 31/03/2005, 14h34
  5. [VB.NET] Migration VB6---VB.NET
    Par billyyy dans le forum Windows Forms
    Réponses: 6
    Dernier message: 07/01/2005, 15h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo