Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Activer / Désactiver Javascript par script ??

18 réponses
Avatar
teddy
Bonjour,

Je cherche comment créer un script VBS ou PowerShell qui active / désactive
le Javascript dans Internet Explorer comme un "interrupteur" c'est à dire à
la demande.

Le but est d'empêcher une application intranet très mal programmée (par une
SSII !) de faire passer intempestivement en avant-plan une fenêtre "mère"
alors que l'on est en pleine saisie d'un formulaire dans une fenêtre
"fille".
A noter qu'un script JS ferme aussi toutes les fenêtres "filles" si on ferme
cette fenêtre "mère" (on doit donc normalement la garder ouverte en
arrière-plan).

En fait, il s'agit peut-être d'agir sur une ou plusieurs clés de la BDR si
toutefois les paramètres de réglage de IE sont bien stockés ici (??).

Des idées ?

Ted

10 réponses

1 2
Avatar
Gilles LAURENT
" teddy" a écrit dans le message de
news:%
| Bonjour,

Bonjour,

| Je cherche comment créer un script VBS ou PowerShell qui active /
| désactive le Javascript dans Internet Explorer comme un
| "interrupteur" c'est à dire à la demande.
[...]

Pour la zone Intranet Local :

HKEY_CURRENT_USER
Software
Microsoft
Windows
CurrentVersion
Internet Settings
Zones
1

1400 = [0|1|3]
0: Active Scripting Activé
1: Active Scripting Demandé
3: Active Scripting Désactivé

Le problème est que la modification de ce paramètre de sécurité en
passant directement par le registre n'est pas dynamique. Il est
nécessaire de relancer Internet Explorer ou d'ouvrir une nouvelle
instance pour que celui-ci soit pris en compte.

--
Gilles LAURENT
http://glsft.free.fr
Avatar
teddy
Merci pour ces infos.

Ce qui m'ennuie en effet, c'est d'être obligé de relancer IE.

Sinon, j'avais aussi pensé à utiliser un programme genre "hook" en C++ ou VB
pour bloquer (figer) la fenêtre "mère" IE qui me pose des problèmes.
J'ai déjà créé ce genre de programme pour simuler des actions sur une
fenêtre (clic), mais je n'ai jamais essayé de forcer par exemple à réduire
ou iconiser une fenêtre.
Si quelqu'un à d'autres suggestions ici ?

Teddy


"Gilles LAURENT" a écrit dans le message de news:

" teddy" a écrit dans le message de
news:%
| Bonjour,

Bonjour,

| Je cherche comment créer un script VBS ou PowerShell qui active /
| désactive le Javascript dans Internet Explorer comme un
| "interrupteur" c'est à dire à la demande.
[...]

Pour la zone Intranet Local :

HKEY_CURRENT_USER
Software
Microsoft
Windows
CurrentVersion
Internet Settings
Zones
1

1400 = [0|1|3]
0: Active Scripting Activé
1: Active Scripting Demandé
3: Active Scripting Désactivé

Le problème est que la modification de ce paramètre de sécurité en
passant directement par le registre n'est pas dynamique. Il est
nécessaire de relancer Internet Explorer ou d'ouvrir une nouvelle
instance pour que celui-ci soit pris en compte.

--
Gilles LAURENT
http://glsft.free.fr




Avatar
Gilles LAURENT
" teddy" a écrit dans le message de
news:%
| Merci pour ces infos.
|
| Ce qui m'ennuie en effet, c'est d'être obligé de relancer IE.

Tout à fait. C'est très contraignant

| Sinon, j'avais aussi pensé à utiliser un programme genre "hook" en
| C++ ou VB pour bloquer (figer) la fenêtre "mère" IE qui me pose des
| problèmes.
| J'ai déjà créé ce genre de programme pour simuler des actions sur une
| fenêtre (clic), mais je n'ai jamais essayé de forcer par exemple à
| réduire ou iconiser une fenêtre.

Si vous maîtrisez les techniques de hook alors pas de problème. Vous
serez en mesure de détecter la création de la fenêtre "parasite" et de
la réduire instantanément avant même que celle-ci ne s'affiche à
l'écran. Il ne vous reste donc plus qu'à essayer ! Une autre solution
consisterait à contacter votre éditeur pour évaluer le coût de la
modification du produit.

Note: Pour simuler des actions clavier/souris sur une fenêtre, la
technique du hook n'est pas utile.

--
Gilles LAURENT
http://glsft.free.fr
Avatar
teddy
Certes le terme "hook" n'est peut-être pas convenable puisqu'il ne s'agit
pas d'intercepter les messages systèmes de WINDOWS mais d'agir avant le
Javascript qui me fait passer ma fenêtre IE6 de Login d'accès à une appli
intranet (développée par une SSII) en avant-plan intempestivement.

La procédure de connexion est longue et si je quitte IE6 pour désactiver
Javascript, à ce moment là je perds la connexion Login. Je ne peux pas
interrompre en permanence le Javascript sinon l'appli intranet ne
fonctionnera plus du tout !

La solution idéale serait de bloquer en arrière-plan cette maudite fenêtre
IE en utilisant un petit programme "externe" qui agirait sur la fenêtre IE6
sans arrêter Javascript.

Merci encore,

Ted


"Gilles LAURENT" a écrit dans le message de news:

" teddy" a écrit dans le message de
news:%
| Merci pour ces infos.
|
| Ce qui m'ennuie en effet, c'est d'être obligé de relancer IE.

Tout à fait. C'est très contraignant

| Sinon, j'avais aussi pensé à utiliser un programme genre "hook" en
| C++ ou VB pour bloquer (figer) la fenêtre "mère" IE qui me pose des
| problèmes.
| J'ai déjà créé ce genre de programme pour simuler des actions sur une
| fenêtre (clic), mais je n'ai jamais essayé de forcer par exemple à
| réduire ou iconiser une fenêtre.

Si vous maîtrisez les techniques de hook alors pas de problème. Vous
serez en mesure de détecter la création de la fenêtre "parasite" et de
la réduire instantanément avant même que celle-ci ne s'affiche à
l'écran. Il ne vous reste donc plus qu'à essayer ! Une autre solution
consisterait à contacter votre éditeur pour évaluer le coût de la
modification du produit.

Note: Pour simuler des actions clavier/souris sur une fenêtre, la
technique du hook n'est pas utile.

--
Gilles LAURENT
http://glsft.free.fr




Avatar
Michel Claveau
Bonjour !

Si la fenêtre fille a un titre précis, et s'il est possible d'appeler
un petit exécutable, j'ai, peut-être, une autre solution :
- un petit utilitaire qui donne le focus à une fenêtre identifiée
par son titre. Le fait de donner le focus (r)amène la fenêtre en
question au premier-plan.

--
@-salutations

Michel Claveau
Avatar
Jean
le fenêtre fille doit *probablement* avoir été créée à l'aide de la
méthode showModelessDialog(bla bla).


Quoique le comportement que vous décrivez ressemble plus a une fenêtre
créée avec la méthode window.open(bla bla) et dont le document maître
contiendrait un w.close() dans l'événement onunload (où w est le
pointeur de la fenêtre ouverte avec open w=window.open(bla bla) ), dans
la mesure où il y a mise en avant-plan total.

Amicalement,

--
Jean - JMST
Belgium

Avatar
teddy
Voici le code d'une petite partie de la page DHTML (page ASP côté serveur)
dont une zone de saisie (champ date) récupéré dans un fichier temporaire de
IE6. Je l'ai "décortiqué" avec Dreamweaver.

Début de page et du formulaire :

function verifBack(){if(event.keyCode == '8'){alert('La fonction 'Back' ou
'Précédent' est interdite');event.keyCode = 0;}}document.onkeydown =
toucheenfoncee;
if (document.all) {
document.oncontextmenu=clicker;}
</SCRIPT>
</HEAD>
<BODY TOPMARGIN=0 LEFTMARGIN=0 onKeydown=verifBack();>
<FORM METHOD=POST
ACTION="/binOce/FR/Ticket/Detail/Traitement/TrtTic_Dat.asp?COOKIENAME=ticketOce&NUMFEN=1&TicketSupport="
NAME=FORMTicCau language=javascript OnSubmit='return attends();'>

Le code DHTML du champ à saisir :

<input name='DATRETTIC1' type=TEXT maxlength value='' size=9
onFocus='textfocus=1;' onBlur='textfocus=0;'
onKeyDown='event.cancelBubble=true'>

Dès que l'on commence à écrire dans ce champ 'DATRETTIC1', la fenêtre du
formulaire "saute" 1 fois sur 2, la fenêtre "mère" passe en avant-plan.

Je pense réduire la fenêtre mère avec une fonction qui emploierait des API
(FindWindow, SetWindowsPos, etc...) mais en VB ou C++
Sinon, via un simple script VBS ou JS, je ne peux pas agir sur les fenêtres
?

Qu'en pensez-vous ?

Ted


"Jean" a écrit dans le message de news:

Bonjour,

Je cherche comment créer un script VBS ou PowerShell qui active /
désactive le Javascript dans Internet Explorer comme un "interrupteur"
c'est à dire à la demande.

Le but est d'empêcher une application intranet très mal programmée (par
une SSII !) de faire passer intempestivement en avant-plan une fenêtre
"mère" alors que l'on est en pleine saisie d'un formulaire dans une
fenêtre "fille".
A noter qu'un script JS ferme aussi toutes les fenêtres "filles" si on
ferme cette fenêtre "mère" (on doit donc normalement la garder ouverte en
arrière-plan).

En fait, il s'agit peut-être d'agir sur une ou plusieurs clés de la BDR
si toutefois les paramètres de réglage de IE sont bien stockés ici (??).

Des idées ?

Ted


Sans voir le code il n'est pas évident d'apporter une solution parceque
les situations peuvent être diverses.
Quoiqu'il en soit la manipulation du dom doit pouvoir apporter une
solution.

En essayant d'user des mes pouvoir extra sensoriel je dirais que si la
fenêtre revient à l'avant plan c'est *probablement* une qestion de focus
(qui devrait pouvoir se résoudre en supprimant du code l'appel à la
méthode focus() ou en manipulant les événements OnFocus/OnBlur).

Comme la fenêtre mère parvient à passer à l'avant-plan, le fenêtre fille
doit *probablement* avoir été créée à l'aide de la méthode
showModelessDialog(bla bla).
Dans ce cas, il faudrait déjà essayer en remplacant dans le code
showModelessDialog(bla bla) par showModalDialog(bla bla).

Amicalement,

--
Jean - JMST
Belgium





Avatar
teddy
L'utilitaire m'intéresse, surtout son code qui doit faire appel aux API.

Ted


"Michel Claveau" <Enleverles a écrit dans le
message de news:
Bonjour !

Si la fenêtre fille a un titre précis, et s'il est possible d'appeler un
petit exécutable, j'ai, peut-être, une autre solution :
- un petit utilitaire qui donne le focus à une fenêtre identifiée par
son titre. Le fait de donner le focus (r)amène la fenêtre en question au
premier-plan.

--
@-salutations

Michel Claveau




Avatar
Michel Claveau
L'utilitaire :
http://mclaveau.com/gvrac/wfocus.exe

Le code-source :
http://mclaveau.com/gvrac/wfocus.au3

Mais, tu risques d'être déçu, car c'est de l'AutoIt...






--
@-salutations

Michel Claveau
Avatar
Jean
Voici le code d'une petite partie de la page DHTML (page ASP côté serveur)
dont une zone de saisie (champ date) récupéré dans un fichier temporaire de
IE6. Je l'ai "décortiqué" avec Dreamweaver.

Début de page et du formulaire :

function verifBack(){if(event.keyCode == '8'){alert('La fonction 'Back'
ou 'Précédent' est interdite');event.keyCode = 0;}}document.onkeydown =
toucheenfoncee;
if (document.all) {
document.oncontextmenu=clicker;}
</SCRIPT>
</HEAD>
<BODY TOPMARGIN=0 LEFTMARGIN=0 onKeydown=verifBack();>
<FORM METHOD=POST
ACTION="/binOce/FR/Ticket/Detail/Traitement/TrtTic_Dat.asp?COOKIENAME=ticketOce&NUMFEN=1&TicketSupport="
NAME=FORMTicCau language=javascript OnSubmit='return attends();'>

Le code DHTML du champ à saisir :

<input name='DATRETTIC1' type=TEXT maxlength value='' size=9
onFocus='textfocus=1;' onBlur='textfocus=0;'
onKeyDown='event.cancelBubble=true'>

Dès que l'on commence à écrire dans ce champ 'DATRETTIC1', la fenêtre du
formulaire "saute" 1 fois sur 2, la fenêtre "mère" passe en avant-plan.



J'esseyarais déjà en retirant les événements onfocus et onblur de
DATRETTIC1, soit :

<input name='DATRETTIC1' type=TEXT maxlength value='' size=9
onKeyDown='event.cancelBubble=true' />

Je vois aussi qu'il interdit de presser sur la touche espace arrière
(code touche 8) qui est le raccourci clavier de "précédent" dans
l'historique d'un navigateur.
Ca n'empêche pas l'utilisation de "précédent" dans l'historique via la
souris (mais c'est peut être géré ailleurs dans la script) ou via la
touche "précédent" d'un clavier multimédia (code touche 166).

Mais bon il manque des fonctions, il faudrait voir aussi ce que font
toucheenfoncee() et attends() par ex.
Come vous dites que des problèmes surviennent "Dès que l'on commence à
écrire ..." les événement claviers (onkeydown, onkeyup, ...) sont à
prendre en considération.
Bref sans avoir une vue plus générale du script ...

Je pense réduire la fenêtre mère avec une fonction qui emploierait des API
(FindWindow, SetWindowsPos, etc...) mais en VB ou C++
Sinon, via un simple script VBS ou JS, je ne peux pas agir sur les fenêtres
?

Qu'en pensez-vous ?

Ted



Franchement je trouve que le mieux serait la correction du code .

Sinon, oui il est *probablement* possible de faire une code VBS ou JS
qui "intercepterait" la fenêtre, en partant de la propriété Windows de
l'objet Shell.Application par exemple un truc dans ce genre ci :

'---8<---Prendre_Et_Afficher_Fenetre_IE.VBS---Jean-JMST-Belgium---
'~~~~TEST~~~~
Set fenetre=Prendre_Fenetre_IE("file:///K:/fichier.htm")
Afficher_Fenetre fenetre
'~~~~TEST~~~~

Sub Afficher_Fenetre(fen)
If LCase(TypeName(fenetre))="nothing" Then Exit Sub
fen.Document.Focus
With CreateObject("WScript.Shell")
If fen.Document.Title="" Then Exit Sub
While Not .AppActivate(fen.Document.Title)
.AppActivate fen.Document.Title
Wend
End With
End Sub

Function Prendre_Fenetre_IE(url)
Set Prendre_Fenetre_IE=Nothing
For Each W In CreateObject("Shell.Application").Windows
If LCase(W.LocationURL)=LCase(url) Then
Set Prendre_Fenetre_IE=W
Exit For
End If
Next
End Function
'---8<---Prendre_Et_Afficher_Fenetre_IE.VBS---Jean-JMST-Belgium---

"Jean" a écrit dans le message de news:

Bonjour,

Je cherche comment créer un script VBS ou PowerShell qui active /
désactive le Javascript dans Internet Explorer comme un "interrupteur"
c'est à dire à la demande.

Le but est d'empêcher une application intranet très mal programmée (par
une SSII !) de faire passer intempestivement en avant-plan une fenêtre
"mère" alors que l'on est en pleine saisie d'un formulaire dans une
fenêtre "fille".
A noter qu'un script JS ferme aussi toutes les fenêtres "filles" si on
ferme cette fenêtre "mère" (on doit donc normalement la garder ouverte en
arrière-plan).

En fait, il s'agit peut-être d'agir sur une ou plusieurs clés de la BDR
si toutefois les paramètres de réglage de IE sont bien stockés ici (??).

Des idées ?

Ted


Sans voir le code il n'est pas évident d'apporter une solution parceque
les situations peuvent être diverses.
Quoiqu'il en soit la manipulation du dom doit pouvoir apporter une
solution.

En essayant d'user des mes pouvoir extra sensoriel je dirais que si la
fenêtre revient à l'avant plan c'est *probablement* une qestion de focus
(qui devrait pouvoir se résoudre en supprimant du code l'appel à la
méthode focus() ou en manipulant les événements OnFocus/OnBlur).

Comme la fenêtre mère parvient à passer à l'avant-plan, le fenêtre fille
doit *probablement* avoir été créée à l'aide de la méthode
showModelessDialog(bla bla).
Dans ce cas, il faudrait déjà essayer en remplacant dans le code
showModelessDialog(bla bla) par showModalDialog(bla bla).

Amicalement,

-- Jean - JMST
Belgium





Amicalement,

--
Jean - JMST
Belgium



1 2