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 :

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

Message par Le Soldat Inconnu »

Hum, revenons au code du début du sujet.

j'ai eu quelque soucis avec et je l'ai modifié.

Voici la nouvelle version :

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")
	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
					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
						Detected = Window
						Break
					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
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
case
Messages : 1546
Inscription : lun. 10/sept./2007 11:13

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

Message par case »

merci lsi ;)
ImageImage
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 »

J'ai mis à jour le code du premier sujet, j'avais encore des soucis avec Windows 7
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 plein écran est utilisée

Message par Ar-S »

Merci pour la mise à jour.
~~~~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
Répondre