L'opération arithmétique a provoqué un dépassement de capacité. [Résolu]

CLeBeR_FR 301 Messages postés mercredi 22 septembre 2010Date d'inscription 27 février 2018 Dernière intervention - 1 nov. 2013 à 23:02 - Dernière réponse : ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention
- 2 nov. 2013 à 15:00
Bonjour,
J'ai téléchargé cette source (http://codes-sources.commentcamarche.net/forum/affich-7049352-keylogger-vb-net-2008-v9-class-hook-pour-clavier-fr-et-vista) qui marche bien sous le Framework 3.5 mais lorsque je compile au Framework 4.5, j'ai l'erreur : "L'opération arithmétique a provoqué un dépassement de capacité." à la ligne :
        KeyboardHandle = SetWindowsHookEx(13, callback, Process.GetCurrentProcess.MainModule.BaseAddress, 0)


Est-ce que quelqu'un connais la raison de ce problème ?
Merci.
Afficher la suite 

10 réponses

Répondre au sujet
Utilisateur anonyme - 1 nov. 2013 à 23:42
+1
Utile
1
Salut,

■ As-tu modifié le projet existant ?
■ De quelle façon as-tu changé de framework ?
   ► par les options du projet existant ?
   ► par copier-coller dans un projet (framework déjà en place) ?
Cette réponse vous a-t-elle aidé ?  
CLeBeR_FR 301 Messages postés mercredi 22 septembre 2010Date d'inscription 27 février 2018 Dernière intervention - 2 nov. 2013 à 10:58
Salut banana,
je n'ai rien modifié dans le projet, j'ai juste changé le Framework via les propriétés du projet, Framework cible.
Commenter la réponse de Utilisateur anonyme
+1
Utile
1
Bonjour,

Déclare les variables numériques plus grandes (int32, int64, double, long)...

Cordialement, Joe.
Cette réponse vous a-t-elle aidé ?  
CLeBeR_FR 301 Messages postés mercredi 22 septembre 2010Date d'inscription 27 février 2018 Dernière intervention - 2 nov. 2013 à 10:59
Bonjour,
je ne comprends pas quelles variables dois-je modifier. Pourrais-je avoir des explications supplémentaires ?
Merci.
Commenter la réponse de ehjoe
+1
Utile
1
Suite,

Ben, par exemple, tout ce qui est (Byte, integer, long), tu le déclares en DOUBLE pour voir si ça passe :

Dim v As Double = 0.0


Cordialement, Joe.
Cette réponse vous a-t-elle aidé ?  
CLeBeR_FR 301 Messages postés mercredi 22 septembre 2010Date d'inscription 27 février 2018 Dernière intervention - 2 nov. 2013 à 13:11
J'ai remplacé le type de variable et ça n'a rien donné.
Commenter la réponse de ehjoe
+1
Utile
1
On peut lire ici qu'il faudrait remplacer le paramètre Process.GetCurrentProcess.MainModule.BaseAddress par IntPtr.Zero pour XP.
A voir...
Cette réponse vous a-t-elle aidé ?  
CLeBeR_FR 301 Messages postés mercredi 22 septembre 2010Date d'inscription 27 février 2018 Dernière intervention - 2 nov. 2013 à 13:12
Merci beaucoup banana j'ai fais ce que tu as dis et ça fonctionne :D Une fois de plus tu arrive à résoudre mon problème ahah !
Par contre est-ce que je pourrais avoir des explications sur la différence entre ces deux paramètres ?
Commenter la réponse de Utilisateur anonyme
+1
Utile
Par contre est-ce que je pourrais avoir des explications sur la différence entre ces deux paramètres ?
Il y a forcément une explication mais je ne pourrai te la donner. Essaye de potasser la documentation de cet API sur msdn.
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de Utilisateur anonyme
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - Modifié par ucfoutu le 2/11/2013 à 15:29
+1
Utile
http://www.pinvoke.net/default.aspx/user32.setwindowshookex

En gardant toujours à l'esprit que le sous-classement est un acte complexe, délicat, non exempt de génération d'erreur fatale à la moindre erreur de sous-classement ou d'interruption.
L'utilisation de sous-classement est totalement déconseillée à tout développeur qui ne maîtrise pas parfaitement son propre langage (d'abord) et les incidences de l'interception de messages windows (ensuite).
Voilà ...

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviend
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de ucfoutu

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.