Page 2 sur 2

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

Publié : ven. 22/avr./2011 19:18
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

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

Publié : ven. 22/avr./2011 22:38
par case
merci lsi ;)

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

Publié : dim. 16/oct./2011 15:32
par Le Soldat Inconnu
J'ai mis à jour le code du premier sujet, j'avais encore des soucis avec Windows 7

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

Publié : dim. 16/oct./2011 21:39
par Ar-S
Merci pour la mise à jour.