Changer vitesse souris sous VB.NET (SPI_GETMOUSESPEED)

Résolu
Cpcdos Messages postés 425 Date d'inscription samedi 11 juillet 2009 Statut Membre Dernière intervention 28 octobre 2016 - 12 juil. 2011 à 12:42
Cpcdos Messages postés 425 Date d'inscription samedi 11 juillet 2009 Statut Membre Dernière intervention 28 octobre 2016 - 23 juil. 2011 à 16:28
Bonjour , je galère , je cherche de partout comment changer la sensibilité de la souris sous VB.net !
il y a une astuce , il faut changer la valeur MouseSensitivity dans le registre et je ne veux pas faire ça !



j'ai essayé ça
 Private Declare Function SystemParametersInfo Lib "user32" Alias _
"SystemParametersInfoA" (ByVal uAction As Long, ByVal uParam As Long, _
ByRef lpvParam As Any, ByVal fuWinIni As Long) As Long


Mais sous VB.NET il n'aime pas "any" --'

donc comment faire ??!

Microsf01
Copyright©Microsf01
Favier Sébastien 01
http://microsf01.fr.nf/

12 réponses

ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
12 juil. 2011 à 12:44
Bonjour,

Avant même d'aller au-delà :
Sous VB.Net ===>> As Integer et pas As Long.

____________________
Utiliser le bouton "REPONSE ACCEPTEE" sur une réponse exacte facilite les recherches ultérieures d'autres forumeurs. PENSEZ-Y SVP
3
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
12 juil. 2011 à 13:30
Bonjour,

En .Net, pas de Any, mais il faut explicitement dire de quel type est le paramètre.
Si plusieurs types sont possibles, il faut faire plusieurs déclarations se surchargeant.

Mon site
3
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
22 juil. 2011 à 23:01
Bonjour,

D'accord, tu n'a pas compris ce que j'avais écrit alors.

Private Declare Function SystemParametersInfo Lib "user32" Alias _
"SystemParametersInfoA" (ByVal uAction As Long, ByVal uParam As Long, _
ByRef lpvParam As Any, ByVal fuWinIni As Long) As Long

Les types Long sont à remplacer par Integer (comme le dit ucfoutu)
Ensuite, le type Any est à remplacer par le type cible, par exemple :
ByRef lpvParam As Boolean

Si plusieurs types peuvent être passés, il faut faire autant de déclaration que de type (Surcharge de fonction).

Mon site
3
Utilisateur anonyme
23 juil. 2011 à 11:17
Bonjour,
Voici une petite classe qui te permet de changer la vitesse de ta souris et de ton clavier :
Public Class clsVitesse
<System.Runtime.InteropServices.DllImport("User32.dll", EntryPoint:="SystemParametersInfo")> _
Private Shared Function SystemParametersInfoGet(ByVal uAction As Int32, ByVal uParam As Int32, ByRef pvParam As Int32, ByVal fuWinIni As Int32) As Int32
End Function
<System.Runtime.InteropServices.DllImport("User32.dll", EntryPoint:="SystemParametersInfo")> _
Private Shared Function SystemParametersInfoSet(ByVal uAction As Int32, ByVal uParam As Int32, ByVal pvParam As Int32, ByVal fuWinIni As Int32) As Int32
End Function

Const GETMOUSESPEED As Int32 = &H70
Const SETMOUSESPEED As Int32 = &H71
Const GETKEYBOARDSPEED As Int32 = &HA
Const SETKEYBOARDSPEED As Int32 = &HB
Const UPDATEINIFILE As Int32 = &H1
Const SENDCHANGE As Int32 = &H2

Property MouseSpeed() As Int32
Get
Dim rval As Int32
SystemParametersInfoGet(GETMOUSESPEED, 0, rval, 0)
Return rval
End Get
Set(ByVal value As Int32)
Dim rval As Int32 = SystemParametersInfoSet(SETMOUSESPEED, 0, value, SENDCHANGE Or UPDATEINIFILE)
If rval = 0 Then
Throw New ArgumentException("La vitesse de la souris doit être comprise entre 1 et 20")
End If
End Set
End Property

Property KeyboardSpeed() As Int32
Get
Dim rval As Int32
SystemParametersInfoGet(GETKEYBOARDSPEED, 0, rval, 0)
Return rval
End Get
Set(ByVal value As Int32)
Dim rval As Int32 = SystemParametersInfoSet(SETKEYBOARDSPEED, value, 0, SENDCHANGE Or UPDATEINIFILE)
If rval = 0 Then
Throw New ArgumentException("La vitesse du clavier doit être comprise entre 1 et 31")
End If
End Set
End Property
End Class

Et pour l'utiliser :
Dim Vitesse As New clsVitesse
MessageBox.Show("La vitesse de la souris est actuellement de : " & Vitesse.MouseSpeed.ToString)
'nouvelle valeur pour la souris
Vitesse.MouseSpeed = 20
MessageBox.Show("La vitesse du clavier est actuellement de : " & Vitesse.KeyboardSpeed.ToString)
'nouvelle valeur pour le clavier
Vitesse.KeyboardSpeed = 31

Bonne soirée.
1

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Cpcdos Messages postés 425 Date d'inscription samedi 11 juillet 2009 Statut Membre Dernière intervention 28 octobre 2016 1
22 juil. 2011 à 17:56
Wai ok , mais j'ai trouvé une solution , j'ai crée le programme en VB6 compilé
et ensuite j'ai plu qu'a l'executer (invisible) avec comme argument la sensibilité personnalisée.
Et cela marche bien !

Merci quand même


Microsf01
Copyright©Microsf01
Favier Sébastien 01
http://microsf01.fr.nf/
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
22 juil. 2011 à 18:03
wow !


____________________
Utiliser le bouton "REPONSE ACCEPTEE" sur une réponse exacte facilite les recherches ultérieures d'autres forumeurs. PENSEZ-Y SVP
0
Utilisateur anonyme
22 juil. 2011 à 21:19
Passer de .NET à vb6 c'est le top
0
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
22 juil. 2011 à 21:37
Bonjour,

Cette technique en plus de nécessiter le framework.NET exige en plus les Runtime VB6.

As-tu tenté les quelques réponses faites par Moi et Ucfoutu concernant le changement du prototype de la fonction ?

Mon site
0
Cpcdos Messages postés 425 Date d'inscription samedi 11 juillet 2009 Statut Membre Dernière intervention 28 octobre 2016 1
22 juil. 2011 à 22:20
Bonjour,

Oui j'ai essayé mais cela ne fonctionne pas , mais je l'avais déja essayé avant

donc , j'ai essayé de converti le projet vb6 qui contient la declaration en VB.net
(convertisseur inclus [2008]) et il y avai un petit commantaire disant que
"any" n'est pas pris en charge --'


Enfin , c'est pas grave , j'ai trouvé un moyen et concernant les runtime vb6 , il n'y a pas de problème
ou même vb5

enfin , Merci


ps: j'ai regardé ici aussi : http://www.bigresource.com/VB-Mouse-Speed-Control-ynS8yAwdp7.html



Microsf01
Copyright©Microsf01
Favier Sébastien 01
http://microsf01.fr.nf/
0
Cpcdos Messages postés 425 Date d'inscription samedi 11 juillet 2009 Statut Membre Dernière intervention 28 octobre 2016 1
23 juil. 2011 à 15:57
Mdr , vous insistez !

Donc pour le code de banana32 , il fonctionne merci a toi

Pour remplacer de long a integer et any par boolean , il fonctionne et donc merci a NHenry et ucfoutu


Merci a tous !!


Microsf01
Copyright©Microsf01
Favier Sébastien 01
http://microsf01.fr.nf/
0
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
23 juil. 2011 à 16:02
Bonjour,

Non, Any, c'est à remplacer par le type visé, ici j'ai mis Boolean, mais ça peut être Integer (Int32) comme Banana32 l'a fait.

Mon site
0
Cpcdos Messages postés 425 Date d'inscription samedi 11 juillet 2009 Statut Membre Dernière intervention 28 octobre 2016 1
23 juil. 2011 à 16:28
.. wais mais il n'y a plus le problème de la déclaration
mais je peux aussi mettre (si je m'en souvient) Object mais bon c'est pas grave
j'ai compris comment ça marche grâce a vous

Merci


Microsf01
Copyright©Microsf01
Favier Sébastien 01
http://microsf01.fr.nf/
0
Rejoignez-nous