OVH Cloud OVH Cloud

pb avec SystemParametersInfo

4 réponses
Avatar
Bseb
je me réfère à l'adresse suivante pour l'utilisation de la fonction
SystemParametersInfo
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/sysinfo/base/systemparametersinfo.asp

j'arrive à activer/désactiver l'ombre du curseur en utilisant
mais je n'arrive pas à lire sa valeur pour voir si il est activé ou
désactivé
elle me retourne toujours 0 meme si elle est activé

pourquoi la valeur retournée ne prend pas 1 quand elle est activé ? pourquoi
elle reste à 0 ?
si quelqu'un pouvait m'aider à résoudre ce problème ?

voici mon code

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

Const SPIF_SENDWININICHANGE = &H2
Const SPIF_UPDATEINIFILE = &H1
Const SPI_GETCURSORSHADOW = 88
Const WM_WININICHANGE = &H1A&


Dim RetVal as Long
Dim Res as Long

RetVal = SystemParametersInfo (SPI_GETCURSORSHADOW, 0, Res, 0)

debug.Print Res

4 réponses

Avatar
François Picalausa
Hello,

la constante SPI_GETCURSORSHADOW a pour valeur 0x101A => en vb &h101A& ou
4122&, à la place de 88.

--
François Picalausa (MVP VB)
http://faq.vb.free.fr --- http://msdn.microsoft.com
http://apisvb.europe.webmatrixhosting.net

"Bseb" a écrit dans le message de
news:c9a4r3$77d$
je me réfère à l'adresse suivante pour l'utilisation de la fonction
SystemParametersInfo



http://msdn.microsoft.com/library/default.asp?url=/library/en-us/sysinfo/base/systemparametersinfo.asp

j'arrive à activer/désactiver l'ombre du curseur en utilisant
mais je n'arrive pas à lire sa valeur pour voir si il est activé ou
désactivé
elle me retourne toujours 0 meme si elle est activé

pourquoi la valeur retournée ne prend pas 1 quand elle est activé ?
pourquoi elle reste à 0 ?
si quelqu'un pouvait m'aider à résoudre ce problème ?

voici mon code

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

Const SPIF_SENDWININICHANGE = &H2
Const SPIF_UPDATEINIFILE = &H1
Const SPI_GETCURSORSHADOW = 88
Const WM_WININICHANGE = &H1A&


Dim RetVal as Long
Dim Res as Long

RetVal = SystemParametersInfo (SPI_GETCURSORSHADOW, 0, Res, 0)

debug.Print Res


Avatar
Bseb
bonjour,

désolé je me suis trompé dans mes copiés coller
mais ma constante SPI_GETCURSORSHADOW avait bien pour valeur &h101a&

Dim RetVal as Long
Dim Res as Long

RetVal = SystemParametersInfo (SPI_GETCURSORSHADOW, 0, Res, 0)

la fonction SystemParametersInfo me retourne 0 à RetVal !!!! c'est pas bon
elle doit retourner un non zéro si tout se passe bien
donc je pense que c'est normal que pour GETCURSORSHADOW je récupère toujours
0 dans Res

mais pourquoi cela ne marche pas ?
je ne vois pas le problème
Avatar
François Picalausa
Hello,

Effectivement, c'est la déclaration qui pose problème.
Quand on essaye:
RetVal = SystemParametersInfo(SPI_GETCURSORSHADOW, 0, Res, 0)
Debug.Print Err.LastDllError

on voit s'afficher 998, ce qui correspond à Invalid access to memory
location. ERROR_NOACCESS
C'est du au Byval devant lpvParam.
En effet, ici on ne passe pas la valeur de la variable mais un pointeur vers
la variable (puisque celle ci doit être modifiée).
La déclaration sera donc:
Private Declare Function SystemParametersInfo _
Lib "user32" _
Alias "SystemParametersInfoA" _
( _
ByVal uAction As Long, _
ByVal uParam As Long, _
lpvParam As Any, _
ByVal fuWinIni As Long _
) _
As Long

--
François Picalausa (MVP VB)
http://faq.vb.free.fr --- http://msdn.microsoft.com
http://apisvb.europe.webmatrixhosting.net

"Bseb" a écrit dans le message de
news:c9a8qa$467$
désolé je me suis trompé dans mes copiés coller
mais ma constante SPI_GETCURSORSHADOW avait bien pour valeur &h101a&


Avatar
Bseb
merci à toi sa marche
je comprend maintenant pourquoi sa retourner pas un non zéro
merci