Détecter si une fenêtre plein écran est utilisée

Partagez votre expérience de PureBasic avec les autres utilisateurs.
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Détecter si une fenêtre plein écran est utilisée

Message par Le Soldat Inconnu »

Salut,

Quelle drôle d'idée, vous allez me dire.

Je m'explique.

Je suis en train de coder un dock (du moins un truc dans le genre), je préfère appeler cela un lanceur d'application
Donc j'ai une barre en haut de mon écran qui me permet de lancer des programmes.

Je lance une vidéo en plein écran, et bien je vois toujours ma barre en haut de l'écran.
C'est pas terrible du coup.

Donc le code suivant me permet de savoir si je suis en train d'utiliser une fenêtre en plein écran.

En gros, pour la fenêtre qui a le focus, je teste :
- Si elle n'a pas de barre de titre
- Si elle occupe tout l'écran (écran principal dans cette exemple)
et si les 2 conditions sont vrai, la fenêtre qui a le focus est en plein écran

Et j'utilise ce résultat pour afficher ou masquer ma barre.

Voici le code

Code : Tout sélectionner

; Auteur : Le Soldat Inconnu
; Version de PB : 4.40

; Explication du programme :
; Détection d'une fenêtre plein écran

Procedure FullScreenWindowDetected()
	Protected Window, DesktopWindow, Detected, WindowRect.RECT
	Structure Structure_Monitor
		Size.l
		Screen.RECT
		WorkArea.RECT
		Principal.l
	EndStructure
	Protected Monitor.Structure_Monitor, MonitorID
	Monitor\Size = SizeOf(Structure_Monitor)
	
	DesktopWindow = FindWindow_(0, "Program Manager")
	GetWindowThreadProcessId_(DesktopWindow, @DesktopWindow_PId)
	MonitorID = MonitorFromWindow_(DesktopWindow, 0)
	If MonitorID
		GetMonitorInfo_(MonitorID, @Monitor)
		
		Window = FindWindow_(0, 0)
		While Window
			If Window <> DesktopWindow
				Style = GetWindowLongPtr_(Window, #GWL_STYLE)
				If Style & #WS_VISIBLE = #WS_VISIBLE And Style & #WS_THICKFRAME = 0
					GetWindowRect_(Window, @WindowRect)
					If WindowRect\left <= Monitor\Screen\left And WindowRect\top <= Monitor\Screen\top And WindowRect\right >= Monitor\Screen\right And WindowRect\Bottom >= Monitor\Screen\Bottom
						GetWindowThreadProcessId_(Window, @Window_PId)
						If Window_PId <> DesktopWindow_PId
							Detected = Window
							Break
						EndIf
					EndIf
				EndIf
			EndIf
			Window = GetWindow_(Window, #GW_HWNDNEXT)
		Wend
	EndIf
	
	ProcedureReturn Detected
EndProcedure

If OpenWindow(0, 0, 0, 256, 48, "Plein écran", #PB_Window_SystemMenu | #PB_Window_MinimizeGadget) = 0
	End
EndIf
StickyWindow(0, 1)
TextGadget(0, 0, 0, 256, 48, "")

AddWindowTimer(0, 1, 250)

Repeat
	Event = WaitWindowEvent()
	
	If Event = #PB_Event_Timer
		Select EventTimer()
			Case 1
				; Forcer toujours au dessus
				If WindowFromPoint_(WindowX(0) | WindowY(0) << 32) <> WindowID(0)
					BringWindowToTop_(WindowID(0))
				EndIf
				
				; Test
				Window = FullScreenWindowDetected()
				If Window
					Texte.s = Space(255)
					GetWindowText_(Window, @Texte, 255)
					SetGadgetText(0, "Un programme actif est en plein écran  : " + Chr(10) + Texte)
				Else
					SetGadgetText(0, "Aucun programme actif n'est en plein écran")
				EndIf
				
		EndSelect
	EndIf
	
	
Until Event = #PB_Event_CloseWindow
Pour tester cet exemple
Lancez le code, une petite fenêtre apparait.
Ouvrez votre navigateur internet.
Mettez vite le navigateur en plein écran et revenez en normal, vous verrez le texte changer en fonction que la fenêtre qui a le focus est plein écran ou non.
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Détecter si une fenêtre plain écran est utilisée

Message par Ar-S »

ça peut être bien pratique effectivement, merci pour le partage.
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Re: Détecter si une fenêtre plain écran est utilisée

Message par Le Soldat Inconnu »

J'ai fais une correction du code :roll:
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Détecter si une fenêtre plain écran est utilisée

Message par Ar-S »

Je le mets dans un coin ^^
Là je rebidouille mon programme d'affichage des programme tv du soir. en 4.30 (car certains trucs ne passent plus en 4.40 et j'ai pas trop envie de me pencher sur l'adaptaion).
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Re: Détecter si une fenêtre plein écran est utilisée

Message par Kwai chang caine »

Coucou, voila super boulet :D

Tu va pas me croire...Mais chez moi ça marche pas :mrgreen:

Bon j'ai, fait "tout ca comme t'as dit"

J'ai mis dans la 4.30 ou la 4.40 ton code
J'ai lancé
J'ai donné le focus a une page internet, et tapé F11, IE est bien en plein ecran, mais y'a encore une petite barre des taches en haut :roll:
Et j'ai attendu l'oeil agard et le filet de bave pointant à la commissure des levres 8O

Et paf...resultat, j'ai zero que je fasse F11 ou non...j'ai zéro.
Remarque ça me derange pas...Zéro c'est mon chiffre, ça correspond a tellement de chose dans ma vie :(

Mais bon, c'etait juste pour te donner l'info :wink:
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Re: Détecter si une fenêtre plein écran est utilisée

Message par Le Soldat Inconnu »

c'est sur Win 2000 ? Si oui, ça compte pas :mrgreen:

tu peux remettre les debug commentés dans la procedure FullScreenWindowDetected et me dire ce que ça retourne (je précise qu'il mettre une appli en plein écran en moins de 5s, c'est le delay en avant dernière ligne)
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Re: Détecter si une fenêtre plein écran est utilisée

Message par Kwai chang caine »

Tu va rire ..... enfin j'suis pas sur :roll:
C'etait sur W2000, tu es trop devin de l'avoir deviné 8O

Mais je suis dans ma maison à moi, et la j'ai evolué en XP :mrgreen:
Et ben ça fait exactement pareil

Et j'ai encore fait "tout ca comme t'as dit"

J'ai décommenté dans la procedure "FullScreenWindowDetected"
J'ai mis dans la 4.40 ton code
J'ai lancé
J'ai donné le focus a une page internet, et tapé F11, IE est bien en plein ecran, mais y'a encore une petite barre des taches en haut
Et j'ai attendu l'oeil agard et le filet de bave pointant à la commissure des levres

Et paf...resultat, j'ai zero que je fasse F11 ou non...j'ai zéro, encore zero, toujours zero...meme pas un debug
Normal puisqu'apparement je passe pas la barre de :

Code : Tout sélectionner

If GetWindowLong_(Window, #GWL_STYLE) & #WS_CAPTION = 0 And GetWindowLong_(Window, #GWL_EXSTYLE) & #WS_EX_TOOLWINDOW = 0 ; Si la fenêtre n'a pas de titre et n'est pas une barre d'outils
Vala vala....le boulet du site a testé pour vous :mrgreen:

Vous avez un code infaillible.....jamais personne n'a trouvé de bug ????
Et bien n'hésitez pas, contactez des maintenant KCC.com et en quelques secondes, vos voeux seront exausés....
Pour trouver les failles y'a les Hackers........pour trouver des bugs, meme la ou y'en a pas... y'a KCC
Deux jours de codage vous attendrons pour qu'il fonctionne a nouveau
Alors n'oubliez pas .......
KCC.COM :mrgreen:
Dernière modification par Kwai chang caine le ven. 18/déc./2009 7:03, modifié 3 fois.
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
Avatar de l’utilisateur
venom
Messages : 3137
Inscription : jeu. 29/juil./2004 16:33
Localisation : Klyntar
Contact :

Re: Détecter si une fenêtre plein écran est utilisée

Message par venom »

Chez moi sa roule belle boule xp sp2 :P et firefox avec F11








@++
Windows 10 x64, PureBasic 5.73 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Re: Détecter si une fenêtre plein écran est utilisée

Message par Kwai chang caine »

venom a écrit :Chez moi sa roule belle boule xp sp2 :P et firefox avec F11
@++
Qu'est ce que je disais..... :roll:
KCC c'est vraiment le meilleur :mrgreen: (En partant du bas...)
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Re: Détecter si une fenêtre plein écran est utilisée

Message par Le Soldat Inconnu »

mais y'a encore une petite barre des taches en haut
c'est a dire ?

essaie avec une vidéo en plein écran alors, juste pour voir.

Même principe, tu lances le code et tu as 5s pour mettre la vidéo en plein écran. merci
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Re: Détecter si une fenêtre plein écran est utilisée

Message par Kwai chang caine »

Voila ma barre de titre si je fait F11
Image

Et j'ai essayé une video en plein ecran, j'ai meme rallongé le temps a 10 s, et pareil toujours mon chiffre favori, désolé :(
Mais bon....c'est pour info...si ça se trouve c'est encore ma faute :oops:
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Re: Détecter si une fenêtre plein écran est utilisée

Message par Le Soldat Inconnu »

KCC, refais le test avec le premier code, j'ai mis à jour.
La procédure de test a également changée. Je veux être sur que ça fonctionne partout.

(Et vire moi cet internet explorer 6, mets IE 7 ou 8 si tu veux IE pas le 6, c'est de la merde. Personnellement, j'ai firefox, depuis la version 3, c'est extra.)
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Re: Détecter si une fenêtre plein écran est utilisée

Message par Kwai chang caine »

Oula lalalala !!!! Une mise a jour de microsoft 8O
Moins j'en fait mieux je me porte.....je suis comme asterix, je resiste.
Plus ça va plus j'installe du W2000 sur mes machines, alors c'est pas pour mettre IE 12 qui sont mis sur le marché avec noir de bug, ou c'que j'en sais :?
Bah IE6 y'a des petits bug, mais je l'utilise depuis sa creation.

J'arrive pas a changer !!!! c'est comme pour ma femme :roll:
Firefox, j'ai essayé des tonnes de fois, mais j'accroche pas.
Je l'utilise que pour recuperer les videos streamé sur le "VEB", car il a pas mal de plugin pour ça :roll:

A la limite pour la navigation je lui prefere OPERA
Mais tout ça c'est une question "d'égout" :D

Quoi qu'il en soit, j'ai les 3 installé sur ma machine, comme ça je jongle selon ce qui se passe :D

Pour en revenir a notre affaire.
Et ben je crois que tu pourras mettre dans ton code ne fonctionne pas avec IE6 :(
Et pour la video, quand je met en plein ecran, je vois plus ton programme, et quand je rend le focus a ton programme, ça enleve le plein ecran...pas facile ton histoire :(

J'suis désolé, j'aurais tant aimé te faire plaisir :oops:
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Détecter si une fenêtre plein écran est utilisée

Message par Ar-S »

Bah IE6 y'a des petits bug, mais je l'utilise depuis sa creation
En même temps IE6 n'est plus du tout aux normes actuelles du web, quand on voit déjà qu'IE8 a ne fait pas comme tous les autres pour gérer les CSS..
Si tu utilises firefox, voilà quelques addon que je te conseils pour qu'il deviennent convivial car il est vrai que sans les addons Firefox est une daube et autant lui préférer Opera mais avec, il est vraiment personnaliable et devient à mon goût l'outil de navigation le plus efficace et agréable.

Sécurité et confort
Adblock Plus : suppresseur de pub
Adblock Plus Elelment hiding helper : pour supprimer plus précisément des pub
NoScript : Permet de n'activer les javascript que de certaines pages (c'est toi qui choisis en fait)
TabMix Plus : Indispensable pour surfer agréablement avec des onglets.
IE Tab : Permet de permuter entre l'affichage Mozilla et IE
FlashGot : Il fait la liason entre firefox et ton gestionnaire de téléchargement (moi j'utilise net Transport 1.94 gratos et il le reconnait)
PureBasic Code Forum : le super plug d'Erix qui fait apparaitre les codes PB en couleur sur le fofo sans rien faire
Dictionnaire hunspel : Correcteur orthographique en temps réel

Analyse des pages
WebDeveloppeur : Lui c'est une perle pour tout développeur de site web, donc à installer si tu fais parfois des sites.
FireBug : Sert aux développeurs mais aussi pour bien d'autres choses ! par exemple si tu utilises Firebug sur n'importe quel page, tu cliques sur la composante "réseau" et il t'affiche toutes les entêtes, tous les fichiers (et leurs poids !), c'est comme ça que je chope toutes les videos streamé par exemples.
Grease Monkey : Permet de modifier le comportement d'une page web en associant un script JavaScript au chargement de celle-ci. Il est ainsi possible d'intervenir sur une page web pour y ajouter ou supprimer du contenu et y modifier le comportement des liens, entre autres.
ColorZilla : Petit icone qui te permet de chopper la couleur précise d'un endroit d'une page web, il te génère le code rvb, #xxxxx etc... trés pratique !

Courrier electronique
Webmail Notifier : Te permet d'accéder instantanément à ton webmail (yahoo, gmail etc...) A utiliser si tu as un webmail évidement
WizeStamp : un plus pour les webmail, il permet de créer des profiles de signatures pour les web mail (perso, pro etc...)

Addon Gros bidouilleur
Ceux là sont pour les connaisseurs, moi je m'en sert sur les sites de "contest" comme HackBBS, Newbie Contest etc... donc ils te seront pas forcément utiles.
ils sont à utiliser avec précaution !

Entête http en direct : Fait ce qu'il dit
Add n Edit Cookie : Permet d'editer et de modifier un cookie !
User Agent Switcher : permet de se faire passer pour un autre navigateur
Tamper Data : intercepte et permet de modifier une valeur lors d'un envoie de formulaire, (impressionnant).

Voilà la très grosse majorité des addon sans lesquels maintenant je trouve un navigateur "pauvre". Tu comprendras que je ne puisses en utiliser un autre.
J'espère t'avoir donné envie de laisser une autre chance de connaitre mieux FF.
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Re: Détecter si une fenêtre plein écran est utilisée

Message par Kwai chang caine »

Et bah dis donc !!!! 8O

1/ Tu prend l'homme "aux gros mognons" dans sa caverne
2/ Tu lui fait poser son gourdin et sa gonzesse, tu peux pas te tromper, c'est la personne qui traine par terre qu'il tire toujours par les cheveux derriere lui
3/ Tu l'assoie dans ton fauteuil
4/ Tu lui explique ce qu'est un ordinateur 8O

Et tu as l'effet que j'ai quand je voie autant de trucs que je ne connais pas, et encore des milliers d'autres que je ne connaitrais jamais faute de temps.
Moi je n'aime pas changer, je suis comme le fonctionnaire type, le beauf que l'on ne voudrait jamais avoir :? :

Toujours le meme T-Shirt
Le meme pantalon
La meme voiture
Le meme pc
La meme route
La meme femme
Le meme explorateur
Le meme os
Le meme langage
Les memes chaussettes meme trouées.....
Le meme appart, ou maison

En un mot, j'suis un fidele...je ne change que si je suis obligé
La preuve en 16 ans, je detestais mon boulot, et ben je n'ai jamais changé :?
J'suis le boeuf parfait quoi :mrgreen:
Celui qu'on mene a l'abbatoir, et qui en plus lui tiens le pistolet pendant que le boucher relasse ses chaussures

Alors quand je vois toutes ces nouveauté chez darty ou autres, ou que je vous voit parler des nouvelles technologies 8O

MAMAN !!!!! J"AI PEUR !!!!!
Image

Je sais je suis une calamité....mais tu m'as plutot fait peur :oops:
Moi j'suis electricien...pas pilote d'airbus :(

Mais, je te remercie beaucoup de me donner un idée de ce que cela pourrait etre 8)
Ce n'est pas dit que dans 10 ans, je l'adopte pas :D
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
Répondre