cs_azerty25
Messages postés1114Date d'inscriptionjeudi 19 décembre 2002StatutMembreDernière intervention 6 mai 2007
-
8 avril 2006 à 09:45
cs_azerty25
Messages postés1114Date d'inscriptionjeudi 19 décembre 2002StatutMembreDernière intervention 6 mai 2007
-
9 avril 2006 à 12:18
Bonjour
Je code avec VS Express 2005, et j'ai un soucis en appelant CallNextHookEx.
J'ai les extraits de code suivant :
Private
Declare
Function CallNextHookEx
Lib
"user32" _
(
ByVal hHook
As
Integer, _
ByVal nCode
As
Integer, _
ByVal wParam
As
Integer, _
ByVal lParam
As KBDLLHOOKSTRUCT)
As
Integer
Private
Structure KBDLLHOOKSTRUCT
Public vkCode
As
Integer
Public scanCode
As
Integer
Public flags
As
Integer
Public time
As
Integer
Public dwExtraInfo
As
Integer
End
Structure
Et j'ai aussi une fonction qui se présente comme cela :
Private
Function KeyboardCallback(
ByVal Code
As
Integer, _
ByVal wParam
As
Integer, _
ByRef lParam
As KBDLLHOOKSTRUCT)
As
Integer
[...]
Return CallNextHookEx(KeyboardHandle, _
Code, wParam, lParam)
End
Function
Et quand je fais CallNextHookEx, j'ai l'erreur suivante.
Un appel à la fonction PInvoke 'KBHook!KBHook.KeyboardLowLevelHook::CallNextHookEx' 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.
Sur la MSDN, il dise qu'il faut utiliser des Marshall pour que les types de données soient les mêmes entre le framework et l'api mais j'ai pas vraiment saisi :(
Sauriez vous comment faut-il faire ?
Ce code je l'ai eu sur PSC, il fonctionne sur VS2003 mais pas sur le 2005 Express que j'ai :o