Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1802 connectés 

  FORUM HardWare.fr
  Programmation
  C#/.NET managed

  [VB2005] Un appel à la fonction PInvoke (..) a déséquilibré la pile !!

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[VB2005] Un appel à la fonction PInvoke (..) a déséquilibré la pile !!

n°1557656
cvb
Posté le 09-05-2007 à 22:09:55  profilanswer
 

Bonjour,
 
Je veux pouvoir ouvrir mon lecteur de CD, n'ayant pas trouvé de fonction sous VB2005, j'utilise une API..car je n'ai pas trouve de fonction intégré sous 2005 me permettant de le faire :/
 
 

Code :
  1. Public Declare Function mciSendString Lib "winmm.dll" Alias "mciSendStringA" _
  2.     (ByVal lpstrCommand As String, ByVal lpstrReturnString As String, _
  3.     ByVal uReturnLength As Long, ByVal hwndCallback As Long) As Long
  4. Public Function OpenCd(ByVal lecteur As String)
  5.         Return mciSendString(String.Format("set CDAudio!{0} door open", lecteur), Nothing, 127, 0)
  6.     End Function


 
Mon lecteur s'ouvre bien mais quelques seconde aprés j'ai ce message d'erreur là !  
Comment est-ce que je pourrais résoudre mon soucis ? :?  
 
Un appel à la fonction PInvoke 'WindowsApplication5!WindowsApplication5.Fonction::mciSendString' a déséquilibré la pile. Cela peut se produire, car la signature PInvoke managée ne correspond pas à la signature cible non managée. Vérifiez que la convention d'appel et les paramètres de la signature PInvoke correspondent à la signature non managée cible.
 
D'avance merci
@+
Marc


Message édité par cvb le 09-05-2007 à 22:10:50
mood
Publicité
Posté le 09-05-2007 à 22:09:55  profilanswer
 

n°1557661
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 09-05-2007 à 22:22:25  profilanswer
 

ta déclaration P/Invoke de mciSendString est fausse. en .NET, les long font 64 bits, pas 32.
essaie la déclaration suivante :

Code :
  1. Public Declare Function mciSendString Lib "winmm.dll" Alias "mciSendStringA" _
  2. (ByVal lpstrCommand As String, ByVal lpstrReturnString As StringBuilder,  ByVal uReturnLength As UInt32, ByVal hwndCallback As IntPtr) As UInt32

Message cité 1 fois
Message édité par Harkonnen le 09-05-2007 à 22:23:29
n°1557666
cvb
Posté le 09-05-2007 à 22:30:27  profilanswer
 

Harkonnen a écrit :

ta déclaration P/Invoke de mciSendString est fausse. en .NET, les long font 64 bits, pas 32.
essaie la déclaration suivante :

Code :
  1. Public Declare Function mciSendString Lib "winmm.dll" Alias "mciSendStringA" _
  2. (ByVal lpstrCommand As String, ByVal lpstrReturnString As StringBuilder,  ByVal uReturnLength As UInt32, ByVal hwndCallback As IntPtr) As UInt32



 
 
Merci beaucoup ça fonctionne Nickel  :bounce:  
 
@++


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C#/.NET managed

  [VB2005] Un appel à la fonction PInvoke (..) a déséquilibré la pile !!

 

Sujets relatifs
[PHP] Aide au sujet d'une fonction et gestion d'erreurEval de variables dans une fonction
Premiers pas :) et premiers problemes... (appel de sous programmes)Appel d'une librairie à partir de VBA
Appel d'une API à partir de PERLPointeur sur fonction
problème de requete en fonction de l'url de la pagefonction onload en javascript avec du xml
Problème avec la fonction avg en double jointure[Javascript] Rendre une fonction compatible avec Firefox
Plus de sujets relatifs à : [VB2005] Un appel à la fonction PInvoke (..) a déséquilibré la pile !!


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR