Détecter qu'une application est en plein écran
-
- Messages : 1500
- Inscription : jeu. 25/mars/2004 11:23
- Localisation : Sophia Antipolis (Nice)
- Contact :
Détecter qu'une application est en plein écran
Bonjour,
Je voudrais savoir si y'a un moyen de détecter si une application est en plein écran (full screen), genre un jeu, un lecteur de vidéos, un diaporama...
Merci d'avance
Lio
Je voudrais savoir si y'a un moyen de détecter si une application est en plein écran (full screen), genre un jeu, un lecteur de vidéos, un diaporama...
Merci d'avance
Lio
Webmestre de Basic-univers
Participez à son extension: ajouter vos programmes et partagez vos codes !
Participez à son extension: ajouter vos programmes et partagez vos codes !
-
- Messages : 1500
- Inscription : jeu. 25/mars/2004 11:23
- Localisation : Sophia Antipolis (Nice)
- Contact :
J'ai trouvé ce code là (adapté d'un forum VB France).
Si personne n'a mieux je vais utiliser celui là. Dans le cas contraire je suis preneur !
Lio
Code : Tout sélectionner
Procedure IsSimpleFullscreenWindow()
Protected hWnd.l, r.RECT
hWnd = GetForegroundWindow_()
If ( GetWindowLong_(hWnd, #GWL_STYLE) & (#WS_MAXIMIZEBOX | #WS_MINIMIZEBOX | #WS_SYSMENU) ) = 0
GetWindowRect_(hWnd, @r)
If r\Bottom - r\Top >= GetSystemMetrics_(#SM_CYSCREEN) Or r\Right - r\Left >= GetSystemMetrics_(#SM_CXSCREEN)
ProcedureReturn #True
EndIf
EndIf
EndProcedure
Lio

Webmestre de Basic-univers
Participez à son extension: ajouter vos programmes et partagez vos codes !
Participez à son extension: ajouter vos programmes et partagez vos codes !
Bonjour je pense que tu trouveras plus simple ce bout de code !
La variable Zoom est Vrai (1) si la fenetre est maximisée ou Fausse (0) si ce n'est pas le cas !
Et un exemple pour tester :
Code : Tout sélectionner
Zoom = IsZoomed_(GetForegroundWindow_())
Et un exemple pour tester :
Code : Tout sélectionner
Enumeration
#Window_0
#Button_0
#Button_1
EndEnumeration
Procedure Open_Window_0()
If OpenWindow(#Window_0, 200, 200, 400, 200, "New window ( 0 )", #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar |#PB_Window_MaximizeGadget )
If CreateGadgetList(WindowID(#Window_0))
ButtonGadget(#Button_0, 70, 50, 100, 30, "Maximise")
ButtonGadget(#Button_1, 70, 90, 100, 30, "Est-ce Max")
EndIf
EndIf
EndProcedure
Open_Window_0()
Repeat
Event = WaitWindowEvent()
GadgetID = EventGadget()
If Event = #PB_Event_Gadget
If GadgetID = #Button_0
If IsZoomed_(GetForegroundWindow_())
ShowWindow_(GetForegroundWindow_(),#SW_NORMAL)
SetGadgetText(#Button_0,"Maximise")
Else
ShowWindow_(GetForegroundWindow_(),#SW_MAXIMIZE)
SetGadgetText(#Button_0,"Retour normal")
EndIf
ElseIf GadgetID = #Button_1
Zoom= IsZoomed_(GetForegroundWindow_())
If Zoom
MessageRequester("État de la fenetre", "La fenetre est maximisée")
Else
MessageRequester("État de la fenetre", "La fenetre n'est pas maximisée")
EndIf
EndIf
EndIf
Until Event = #PB_Event_CloseWindow
End
Dernière modification par brossden le ven. 02/nov./2007 10:11, modifié 1 fois.
Denis
Bonne Jounée à tous
Bonne Jounée à tous
-
- Messages : 1554
- Inscription : lun. 24/juil./2006 6:44
- Localisation : vosges (France) 47°54'39.06"N 6°20'06.39"E
Oui tu as raison, mais tu es toujours en mode fenetré, pas vraiment en Fullscreen.
lionel_om disait initalement
codes DM3D en FullScreen).
lionel_om disait initalement
et dans ce cas la, vos code ne semble pas etre fiable à 100%... (exemplelionel_om a écrit :...
Je voudrais savoir si y'a un moyen de détecter si une application est en plein écran (full screen),
genre un jeu, un lecteur de vidéos, un diaporama...
...
codes DM3D en FullScreen).
Force et sagesse...
ben oui ! mais a ma connaissance on ne peut pas lancer un mode Screen autrement qu'en plein ecran !!!tmyke a écrit :Oui tu as raison, mais tu es toujours en mode fenetré, pas vraiment en Fullscreen.
lionel_om disait initalement
et dans ce cas la, vos code ne semble pas etre fiable à 100%... (exemplelionel_om a écrit :...
Je voudrais savoir si y'a un moyen de détecter si une application est en plein écran (full screen),
genre un jeu, un lecteur de vidéos, un diaporama...
...
codes DM3D en FullScreen).
sinon c'est pas du Screen c'est du WindowScreen !!

ok pour Fullscreen !
Nouveau code :
Il faut bien evidement avoir un pps à afficher et mettre le bon nom d fichier dans RunProgram
Nouveau code :
Code : Tout sélectionner
RunProgram("c:\MonPPS.pps")
Delay(2000)
Global hwnd.l, r.RECT
hwnd = GetForegroundWindow_()
GetWindowRect_(hwnd, @r)
ExamineDesktops()
If r\top+r\bottom = DesktopHeight(0) And r\left+r\right = DesktopWidth(0)
MessageRequester("Etat de la fenettre","Fullscreen")
Else
MessageRequester("Etat de la fenettre","Fenêtré")
EndIf
Denis
Bonne Jounée à tous
Bonne Jounée à tous
-
- Messages : 1500
- Inscription : jeu. 25/mars/2004 11:23
- Localisation : Sophia Antipolis (Nice)
- Contact :
Merci brossden pour tes codes.
Par contre je cherchais un code qui ne considérait pas l'explorateur Windows comme une fenêtre par exemple.
En fait j'en ai besoin pour un programme qui tourne en background et qui peut-être mis en veille qd on lance un jeu ou autre (pour ne pas ralentir une grosse application). Donc, je ne peux pas juste tester la taille de la fenêtre.
Je vais tout de même faire quelques tests avec tes deux codes et voir cet fonction de l'API Windows.
Merci bien de votre aide.
Lio
Par contre je cherchais un code qui ne considérait pas l'explorateur Windows comme une fenêtre par exemple.
En fait j'en ai besoin pour un programme qui tourne en background et qui peut-être mis en veille qd on lance un jeu ou autre (pour ne pas ralentir une grosse application). Donc, je ne peux pas juste tester la taille de la fenêtre.
Je vais tout de même faire quelques tests avec tes deux codes et voir cet fonction de l'API Windows.
Merci bien de votre aide.
Lio

Webmestre de Basic-univers
Participez à son extension: ajouter vos programmes et partagez vos codes !
Participez à son extension: ajouter vos programmes et partagez vos codes !
-
- Messages : 1500
- Inscription : jeu. 25/mars/2004 11:23
- Localisation : Sophia Antipolis (Nice)
- Contact :
En fait je suis en train de faire un programme pour changer le WallPaper du bureau. Et donc je voudrais qu'il se mette en pause quand un jeu ou un film est lancé en plein écran. Car j'ai vu qu'avec Media Player Classic, lors d'un changement de WallPaper, certaines vidéos posent des problèmes d'affichage.
Donc le programme en lui même ne consomme rien en ressource, sauf lors du changement d'image : conversion d'un JPG en BMP (avec redimension si format portait).
Lio
Donc le programme en lui même ne consomme rien en ressource, sauf lors du changement d'image : conversion d'un JPG en BMP (avec redimension si format portait).
Lio
Webmestre de Basic-univers
Participez à son extension: ajouter vos programmes et partagez vos codes !
Participez à son extension: ajouter vos programmes et partagez vos codes !
-
- Messages : 1500
- Inscription : jeu. 25/mars/2004 11:23
- Localisation : Sophia Antipolis (Nice)
- Contact :
Ma fonction actuelle est ainsi :
Ça semble pas trop mal marcher, mais c'est sans doute perfectible. Mais je préfère que le "diaporama" continu alors qu'un jeu est lancé plutôt que le diaporama ne cesse de s'arrêter.
Lio
Code : Tout sélectionner
Procedure IsSimpleFullscreenWindow()
Protected hWnd.l, r.RECT, txt.s
hWnd = GetForegroundWindow_()
If ( GetWindowLong_(hWnd, #GWL_STYLE) & (#WS_MAXIMIZEBOX | #WS_MINIMIZEBOX | #WS_SYSMENU) ) = 0
GetWindowRect_(hWnd, @r)
If r\Bottom - r\Top >= GetSystemMetrics_(#SM_CYSCREEN) Or r\Right - r\Left >= GetSystemMetrics_(#SM_CXSCREEN)
txt = Space (256)
GetWindowText_ (hwnd, txt, 256)
If txt <> "Program Manager" And txt <> #NULL$
ProcedureReturn #True
EndIf
EndIf
EndIf
EndProcedure
Lio
Webmestre de Basic-univers
Participez à son extension: ajouter vos programmes et partagez vos codes !
Participez à son extension: ajouter vos programmes et partagez vos codes !