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

Signaler
-
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
-
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.

6 réponses


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) ?
Utilisateur anonyme
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.
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.
Utilisateur anonyme
J'ai remplacé le type de variable et ça n'a rien donné.
On peut lire ici qu'il faudrait remplacer le paramètre Process.GetCurrentProcess.MainModule.BaseAddress par IntPtr.Zero pour XP.
A voir...
Utilisateur anonyme
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 ?
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.
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
236
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
Bonjour,

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

Cordialement, Joe.
Utilisateur anonyme
Bonjour,
je ne comprends pas quelles variables dois-je modifier. Pourrais-je avoir des explications supplémentaires ?
Merci.