OVH Cloud OVH Cloud

Détecter Internet Explorer en plein écran

9 réponses
Avatar
Gloops
Bonjour tout le monde,

Je dois admettre que je patauge un peu pour détecter quand la fenêtre
active d'Internet Explorer passe en mode plein écran, celui qu'on ouvre
avec F11.

Si il s'agit d'une fenêtre que j'ouvre avec mon application, ça va encore.

Set expl = CreateObject("InternetExplorer.Application")
expl.Visible = True

SiPleinEcran = expl.TheaterMode

et à la fin :

expl.Quit
Set expl = Nothing

Mais maintenant, si c'est l'utilisateur qui a ouvert Internet Explorer,
ça se gâte.

Set expl = GetObject("InternetExplorer.Application")
syntaxe incorrecte, erreur 800401E4

Set expl = GetObject("InternetExplorer.Application", vbNullString)
argument ou appel de procédure incorrect, erreur 5

Set expl = GetObject("InternetExplorer.Application", "")
ou
Set expl = GetObject("GetObject Function - Microsoft Internet Explorer",
"InternetExplorer")
le composant ActiveX ne peut créer l'objet, erreur 429

Si quelqu'un pouvait me souffler ce qu'il faut faire ...

D'ailleurs, une fois que j'aurai réussi à créer un objet sur IE, encore
s'agit-il que ce soit le bon, si il y a plusieurs fenêtres d'ouvertes.
J'ai bien essayé de mettre l'URL en deuxième argument ...

9 réponses

Avatar
Jacques93
Bonjour Gloops,
Gloops a écrit :
Bonjour tout le monde,

Je dois admettre que je patauge un peu pour détecter quand la fenêtre
active d'Internet Explorer passe en mode plein écran, celui qu'on ouvre
avec F11.

Si il s'agit d'une fenêtre que j'ouvre avec mon application, ça va encore.

Set expl = CreateObject("InternetExplorer.Application")
expl.Visible = True

SiPleinEcran = expl.TheaterMode

et à la fin :

expl.Quit
Set expl = Nothing

Mais maintenant, si c'est l'utilisateur qui a ouvert Internet Explorer,
ça se gâte.

Set expl = GetObject("InternetExplorer.Application")
syntaxe incorrecte, erreur 800401E4

Set expl = GetObject("InternetExplorer.Application", vbNullString)
argument ou appel de procédure incorrect, erreur 5

Set expl = GetObject("InternetExplorer.Application", "")
ou
Set expl = GetObject("GetObject Function - Microsoft Internet Explorer",
"InternetExplorer")
le composant ActiveX ne peut créer l'objet, erreur 429

Si quelqu'un pouvait me souffler ce qu'il faut faire ...

D'ailleurs, une fois que j'aurai réussi à créer un objet sur IE, encore
s'agit-il que ce soit le bon, si il y a plusieurs fenêtres d'ouvertes.
J'ai bien essayé de mettre l'URL en deuxième argument ...





Je crois que pour des raisons de sécurité on n'a pas accès à une
instance de IE que l'on a pas crée. Mais si ça peut faire avancer
les choses, pour contourner le problème de syntaxe, tu ajoutes une
référence à :

Microsoft Internet Controls (shdocvw.dll)

et dans le code :

Dim ie As InternetExplorer

Set ie = GetObject("", "InternetExplorer.Application")
MsgBox ie.TheaterMode

Mais la réponse sera toujours False, et tu n'auras aucun contrôle sur
l'objet, et comme tu l'indique si tu as plusieurs fenêtres...

--
Cordialement,

Jacques.
Avatar
Gloops
Ah, "by design", donc.

Il me reste à détecter F11, peut-être ...

Bien entendu si l'utilisateur clique sur le bouton, Tintin.


________________________________________
Jacques93 a écrit, le 10/10/2005 19:25 :

Je crois que pour des raisons de sécurité on n'a pas accès à une
instance de IE que l'on a pas crée. Mais si ça peut faire avancer
les choses, pour contourner le problème de syntaxe, tu ajoutes une
référence à :

Microsoft Internet Controls (shdocvw.dll)

et dans le code :

Dim ie As InternetExplorer

Set ie = GetObject("", "InternetExplorer.Application")



Mince alors, il réussit même à l'obtenir alors que je n'ai pas ouvert IE ...

MsgBox ie.TheaterMode

Mais la réponse sera toujours False, et tu n'auras aucun contrôle sur
l'objet, et comme tu l'indique si tu as plusieurs fenêtres...



Effectivement. ça renseigne encore moins que la clef de registre.
Avatar
parci
On Mon, 10 Oct 2005 18:19:42 +0200, Gloops wrote:

Mais maintenant, si c'est l'utilisateur qui a ouvert Internet Explorer,
ça se gâte.

Set expl = GetObject("InternetExplorer.Application")
syntaxe incorrecte, erreur 800401E4

Set expl = GetObject("InternetExplorer.Application", vbNullString)
argument ou appel de procédure incorrect, erreur 5

Set expl = GetObject("InternetExplorer.Application", "")
ou
Set expl = GetObject("GetObject Function - Microsoft Internet Explorer",
"InternetExplorer")
le composant ActiveX ne peut créer l'objet, erreur 429

Si quelqu'un pouvait me souffler ce qu'il faut faire ...




Set expl = GetObject( ,"InternetExplorer.Application")
Avatar
Gloops
Erreur 429 :)

parci a écrit, le 10/10/2005 19:44 :

Set expl = GetObject( ,"InternetExplorer.Application")



Avatar
parci
On Mon, 10 Oct 2005 19:50:20 +0200, Gloops wrote:

Erreur 429 :)



Alors comme ça pour compléter ce que répondais Jacques, avec une
réfrence à SHDOCVW.dll (Microsoft Internet Controls) : :

Dim ie As SHDocVw.InternetExplorer
Dim sh As New SHDocVw.ShellWindows

For Each ie In sh
Debug.Print ie.TheaterMode, ie.LocationURL
Next ie

L'explotareur de fichiers fait aussi partie de cette collection.
Avatar
Gloops
Eh mais c'est que ça marche !

On peut même avoir ie.hWnd, et avec un peu de chance ça correspond bien
à celui de la fenêtre quand elle est sélectionnée ...

Eh ben, tu as bien fait de venir.

Merci.
____________________________________
parci a écrit, le 10/10/2005 22:52 :
On Mon, 10 Oct 2005 19:50:20 +0200, Gloops wrote:


Erreur 429 :)




Alors comme ça pour compléter ce que répondais Jacques, avec une
réfrence à SHDOCVW.dll (Microsoft Internet Controls) : :

Dim ie As SHDocVw.InternetExplorer
Dim sh As New SHDocVw.ShellWindows

For Each ie In sh
Debug.Print ie.TheaterMode, ie.LocationURL
Next ie

L'explotareur de fichiers fait aussi partie de cette collection.



Avatar
Gloops
Je me demande si il y a un moyen plus élégant d'associer l'objet
ShellWindow à l'objet Window repéré par GetForegroundWindow()

Je m'en suis sorti comme ça :


Public Function EstTheatre(hWnd As Long) As Boolean
Dim ie As SHDocVw.InternetExplorer
Dim sh As New SHDocVw.ShellWindows
For Each ie In sh
If ie.hWnd = hWnd Then
EstTheatre = ie.TheaterMode
Exit Function
End If
Next
Set ie = Nothing
Set sh = Nothing
End Function



Et ça marche, ça évite le scintillement, que le mode plein écran ait été
obtenu par F11 ou par la barre d'outils IE.
_____________________________________
parci a écrit, le 10/10/2005 22:52 :
On Mon, 10 Oct 2005 19:50:20 +0200, Gloops wrote:


Erreur 429 :)




Alors comme ça pour compléter ce que répondais Jacques, avec une
réfrence à SHDOCVW.dll (Microsoft Internet Controls) : :

Dim ie As SHDocVw.InternetExplorer
Dim sh As New SHDocVw.ShellWindows

For Each ie In sh
Debug.Print ie.TheaterMode, ie.LocationURL
Next ie

L'explotareur de fichiers fait aussi partie de cette collection.



Avatar
parci
>Je me demande si il y a un moyen plus élégant d'associer l'objet
ShellWindow à l'objet Window repéré par GetForegroundWindow()



Pas à ma connaissance. Je ne vois ni API, ni interface pour faire autrement.


Je m'en suis sorti comme ça :


Public Function EstTheatre(hWnd As Long) As Boolean
Dim ie As SHDocVw.InternetExplorer
Dim sh As New SHDocVw.ShellWindows
For Each ie In sh
If ie.hWnd = hWnd Then
EstTheatre = ie.TheaterMode
Exit Function
End If
Next
Set ie = Nothing
Set sh = Nothing
End Function



Chipotons :

Public Function EstTheatre(hWnd As Long) As Boolean
Dim ie As SHDocVw.InternetExplorer
Dim sh As New SHDocVw.ShellWindows
For Each ie In sh
If ie.hWnd = hWnd Then
EstTheatre = ie.TheaterMode
Set ie = Nothing
Exit Function
End If
Next ie
End Function

--
Message monitoré par axinews : http://www.axinews.com/
Avatar
Gloops
parci a écrit, le 13/10/2005 15:49 :
Chipotons :




If ie.hWnd = hWnd Then
EstTheatre = ie.TheaterMode
Set ie = Nothing
Exit Function
End If



Oups, bien vu