Bonjour. J'ai une petite application contenenant entre autre une fonction permettant de modifier l'écran de veille.

Le code fonctionne pour modifier l'écran et enregistrer les paramètres. Mais si j'ai arrêté l'écran de veille via les propriétés Affichage Windows et que je choisis un nouvel écran de veille via mon appli, les paramètres sont enregistrés mais l'écran de veille ne démarre pas au bout du délai spécifié dans propriétés Affichage.

Pour que ça fonctionne, je dois aller dans propriétés Affichage et cliquer sur OK dans l'onglet écran de veille.

j'ai une fonction ToggleScreenSaverActive (True) mais ça ne marche pas. Comment faire pour assurer que l'écran va démarrer au bout du délai d'attente?

Voici mon code et merci d'avance.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
Private 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
Private Const SPI_SETDESKWALLPAPER = 20
Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
Private Declare Function GetPrivateProfileString Lib "kernel32" Alias "GetPrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpDefault As String, ByVal lpReturnedString As String, ByVal nSize As Long, ByVal lpFileName As String) As Long
Private Declare Function WritePrivateProfileString Lib "kernel32" Alias "WritePrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpString As Any, ByVal lpFileName As String) As Long
Private Declare Function GetWindowsDirectory Lib "kernel32" Alias "GetWindowsDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long) As Long
Private Declare Function GetSystemDirectory Lib "kernel32" Alias "GetSystemDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long) As Long
Private Declare Function GetShortPathName Lib "kernel32" Alias "GetShortPathNameA" (ByVal lpszLongPath As String, ByVal lpszShortPath As String, ByVal cchBuffer As Long) As Long
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Private Const WM_SYSCOMMAND = &H112
Private Const SC_SCREENSAVE = &HF140&
 
Private Declare Function SystemParametersInfo2 Lib "user32" Alias "SystemParametersInfoA" (ByVal uiAction As Long, ByVal uiParam As Long, pvParam As Any, ByVal fWInIni As Long) As Boolean
Private Const SPI_GETSCREENSAVEACTIVE As Long = &H10
 
 
Private Declare Function SystemParametersInfo3 Lib "user32" Alias "SystemParametersInfoA" (ByVal uAction As Long, ByVal uParam As Long, ByVal lpvParam As Long, ByVal fuWinIni As Long) As Long
Private Const SPI_SETSCREENSAVEACTIVE = 17
 
 
    Public Function ToggleScreenSaverActive(Active As Boolean) As Boolean
		    Dim lActiveFlag As Long
		    Dim retvaL As Long
		    lActiveFlag = IIf(Active, 1, 0)
		    retvaL = SystemParametersInfo3(SPI_SETSCREENSAVEACTIVE, lActiveFlag, 0, 0)
		    ToggleScreenSaverActive = retvaL > 0
    End Function
 
 
 
Private Sub filSystem_Click()
 
    'enregistrement du choix d'écran de veille
 
    Dim screen_saver As String
 
    screen_saver = ShortFileName( _
        GetSystemDir() & "\" & filSystem.FileName)
    SetIniString _
        GetWindowsDir() & "\System.ini", _
        "boot", "SCRNSAVE.EXE", screen_saver
 
    ShowScreenSaver
 
    ToggleScreenSaverActive (True) 
 
End Sub
[Balises "Code" ajoutées par AlainTech]
[Pensez-y vous-même à l'avenir. Merci.]