Bonjour,
J'aimerais désactiver l'écran de veille par du code vb 2005 mais je n'y arrive pas.
Voici ce que j'ai mis dans ma classe en entête et dans un bouton :
Entête :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 Private Declare Auto Function SystemParametersInfo Lib "user32.dll" (ByVal uAction As Long, ByVal uParam As Long, ByVal lpvParam As String, ByVal fuWinIni As Long) As Long Const SPIF_UPDATEINIFILE = 1 Const SPIF_SENDWININICHANGE = 2 Public Const SPI_GETSCREENSAVEACTIVE = 16 'Permet de savoir si le ScreenSaver est activé sur votre machine Public Const SPI_GETSCREENSAVETIMEOUT = 14 'Permet de récupérer le temps au bout duquel le screenSaver démarre Public Const SPI_SETSCREENSAVEACTIVE = 17 'Permet d'activer ou de désactiver le screenSaver Public Const SPI_SETSCREENSAVETIMEOUT = 15 'Permet de changer le temps au bout duquel le screenSaver doit démarrer
Le bouton :
Quand j'exécute le prog. et que je clique sur le bouton, une erreur est levée :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 Dim Ret As Long Dim Activer As Boolean 'Désactive l'écran de veille Ret = SystemParametersInfo(SPI_SETSCREENSAVEACTIVE, False, 0, SPIF_SENDWININICHANGE Or SPIF_UPDATEINIFILE) If Ret = 1 Then MsgBox("Le screenserver est désactivé", vbInformation + vbOKOnly, "Info ScreenSaver") End If
PinvokeStackImbalance a été détecté : Un appel à la fonction PInvoke 'test!WindowsApplication1.Form1::SystemParametersInfo' 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.
Quelqu'un aurait-il une idée sur le pourquoi de cette erreur ?
Merci à vous.
Partager