Bonsoir a tous,
J'ai une appli qui tourne sur mon PC genre WatchDog (chien de garde) et je voudrais que lorsqu'une alerte important a mes yeux se produit, la couleur de fond de l'écran du bureau change.
Apparemment, PB ne sait pas faire nativement, mais avec l'aide d'une API, peut-être.
Avez vous une idée de comment je pourrais arriver a mes fin.
cage
Question de couleur du fond d'écran du bureau
Question de couleur du fond d'écran du bureau
■ Win10 Pro 64-bit (Intel Celeron CPU N2920 @ 1.86GHz, 4,0GB RAM, Intel HD Graphics) & PB 6.12 LTS
■ Vivre et laisser vivre.
■ PureBasic pour le fun
■ Gérard sur le forum Anglais
■ Mes sites: http://pbcage.free.fr - http://yh.toolbox.free.fr
■ Vivre et laisser vivre.
■ PureBasic pour le fun
■ Gérard sur le forum Anglais
■ Mes sites: http://pbcage.free.fr - http://yh.toolbox.free.fr
Re: Question de couleur du fond d'écran du bureau
Bonsoir,
Je commence a me répondre:
La procédure GetSysColor_(#COLOR_DESKTOP) fonctionne comme attendue et retourne bien la couleur de fond du bureau.
Cette valeur est a conserver pour pouvoir remettre la couleur de fond du bureau a sa valeur initiale.
La moitié du chemin est parcourue, reste a changer la couleur de fond du bureau.
C'est là que ça coince, la procédure SetSysColors_(#window,#COLOR_BACKGROUND,RGB(0,0,0)) ne semble pas fonctionner comme je le pensais.
Il me manque peut-être une commande pour rafraichir (actualiser) l'écran.
Quelqu'un aurait-il une idée ?
Voici un exemple de mes recherches:
cage
Je commence a me répondre:
La procédure GetSysColor_(#COLOR_DESKTOP) fonctionne comme attendue et retourne bien la couleur de fond du bureau.
Cette valeur est a conserver pour pouvoir remettre la couleur de fond du bureau a sa valeur initiale.
La moitié du chemin est parcourue, reste a changer la couleur de fond du bureau.
C'est là que ça coince, la procédure SetSysColors_(#window,#COLOR_BACKGROUND,RGB(0,0,0)) ne semble pas fonctionner comme je le pensais.
Il me manque peut-être une commande pour rafraichir (actualiser) l'écran.
Quelqu'un aurait-il une idée ?
Voici un exemple de mes recherches:
Code : Tout sélectionner
EnableExplicit
EnableDebugger
#window =20 ; il faut bien choisir une valeur, alors 20, c'est parfait
#screen1=0 ; valeur supposée
#screen2=1 ; valeur supposée
Define desktop,couleur,Event
desktop=GetDesktopWindow_() : Debug "desktop="+desktop+" / $"+Hex(desktop)
couleur=GetSysColor_(#COLOR_DESKTOP) : Debug "couleur="+couleur+" / $"+Hex(couleur)
Debug "couleur=RGB ("+Red(couleur)+","+Green(couleur)+","+Blue(couleur)+")"
Debug "couleur=RGBA("+Red(couleur)+","+Green(couleur)+","+Blue(couleur)+","+Alpha(couleur)+")"
If OpenWindow(#window,100,100,600,400,"Window")
; on vérifie que la couleur de la fenêtre est identique a la couleur de fond du bureau
; la vérification est visuelle
SetWindowColor(#window,couleur)
; les 2 commandes suivantes retournent 0, soit une erreur est survenu.
; donc la commande ne s'applique pas a la fénêtre en cours
Debug "test avec #window ="+#window
Debug SetSysColors_(#window,#COLOR_BACKGROUND,RGB(0,0,0))
Debug SetSysColors_(#window,#COLOR_BACKGROUND,RGBA(0,0,0,0))
; les 2 commandes suivantes retournent 1, soit la commande c'est bien dérolée.
; on peut penser que la valeur 0 représente le premier bureau, la valeur 1 le second burea,...
; je n'ai qu'un écran disponible
Debug "test avec #screen1 = "+#screen1
Debug SetSysColors_(#screen1,#COLOR_BACKGROUND,RGB(0,0,0))
Debug SetSysColors_(#screen1,#COLOR_BACKGROUND,RGBA(0,0,0,0))
; les 2 commandes suivantes retournent 0, soit une erreur est survenu.
Debug "test avec #screen2 = "+#screen2
Debug SetSysColors_(#screen2,#COLOR_BACKGROUND,RGB(0,0,0))
Debug SetSysColors_(#screen2,#COLOR_BACKGROUND,RGBA(0,0,0,0))
Repeat
Event=WaitWindowEvent(50)
Until Event=#PB_Event_CloseWindow
EndIf
End
■ Win10 Pro 64-bit (Intel Celeron CPU N2920 @ 1.86GHz, 4,0GB RAM, Intel HD Graphics) & PB 6.12 LTS
■ Vivre et laisser vivre.
■ PureBasic pour le fun
■ Gérard sur le forum Anglais
■ Mes sites: http://pbcage.free.fr - http://yh.toolbox.free.fr
■ Vivre et laisser vivre.
■ PureBasic pour le fun
■ Gérard sur le forum Anglais
■ Mes sites: http://pbcage.free.fr - http://yh.toolbox.free.fr
- Mindphazer
- Messages : 694
- Inscription : mer. 24/août/2005 10:42
Re: Question de couleur du fond d'écran du bureau
Une petite recherche sur le forum anglais :
https://www.purebasic.fr/english/viewto ... fb#p507546
https://www.purebasic.fr/english/viewto ... fb#p507546
Bureau : Win10 64bits
Maison : Macbook Pro M3 16" SSD 512 Go / Ram 24 Go - iPad Pro 32 Go (pour madame) - iPhone 15 Pro Max 256 Go
Maison : Macbook Pro M3 16" SSD 512 Go / Ram 24 Go - iPad Pro 32 Go (pour madame) - iPhone 15 Pro Max 256 Go
Re: Question de couleur du fond d'écran du bureau
Bonjour,
Je n'avais pas prêté attention a l'histoire des pointers. Méa culpa.
Pourtant, la définition est claire.
J'avais complétement loupé ce post, pourtant j'ai vraiment cherché.
Merci a toi de me l'avoir indiqué.
Par contre, je ne sais pas exactement quelle valeur (cElements)indiquer pour SetSysColors_(cElements,...
Si je met 0, ça ne fonctionne pas.
Mais si je met une valeur entre 1 et 4 ça fonctionne. La couleur de fond de bureau est changée.
Je ne sais donc pas a quoi exactement cette valeur correspond.
cage
Je n'avais pas prêté attention a l'histoire des pointers. Méa culpa.
Pourtant, la définition est claire.
Merci Mindphazer, ça fonctionne avec les commandes suivantes:BOOL WINAPI SetSysColors(
int cElements, // number of elements to change
CONST INT *lpaElements, // address of array of elements
CONST COLORREF *lpaRgbValues // address of array of RGB values
);
Code : Tout sélectionner
EnableExplicit
EnableDebugger
Define desktop_old_color,desktop_new_color
; on récupére la couleur actuelle de fond du bureau
desktop_old_color=GetSysColor_(#COLOR_DESKTOP)
Dim lpaElements(0)
Dim lpaRgbValues(0)
lpaElements(0) = #COLOR_BACKGROUND
lpaRgbValues(0) = RGB(255,0,0)
; on change la couleur de fond du bureau
SetSysColors_(1,@lpaElements(),@lpaRgbValues(0))
; on récupére la nouvelle couleur de fond du bureau
desktop_new_color=GetSysColor_(#COLOR_DESKTOP)
Debug "desktop_old_color="+desktop_old_color
Debug "desktop_new_color="+desktop_new_color
Merci a toi de me l'avoir indiqué.
Par contre, je ne sais pas exactement quelle valeur (cElements)indiquer pour SetSysColors_(cElements,...
Si je met 0, ça ne fonctionne pas.
Mais si je met une valeur entre 1 et 4 ça fonctionne. La couleur de fond de bureau est changée.
Je ne sais donc pas a quoi exactement cette valeur correspond.
cage
■ Win10 Pro 64-bit (Intel Celeron CPU N2920 @ 1.86GHz, 4,0GB RAM, Intel HD Graphics) & PB 6.12 LTS
■ Vivre et laisser vivre.
■ PureBasic pour le fun
■ Gérard sur le forum Anglais
■ Mes sites: http://pbcage.free.fr - http://yh.toolbox.free.fr
■ Vivre et laisser vivre.
■ PureBasic pour le fun
■ Gérard sur le forum Anglais
■ Mes sites: http://pbcage.free.fr - http://yh.toolbox.free.fr