Page HTML sous contrôle script WSH - VB/VBA/VBS - Programmation
MarshPosté le 06-01-2006 à 15:36:42
Bonjour,
Je galère depuis un bon bout de temps sur un problème d'accès à une propriété de l'objet COM "InternetExplorer.Application", mon but étant de piloter une fenêtre HTML depuis un script WSH.
Voici un script relativement basique qui me permet d'afficher une page HTML, dans mon cas un message d'alerte :
'Wait till MSIE is ready Do WScript.Sleep 100 Loop While oIE.Busy = 1
'Connect to the event handler set oBut = oIE.document.getElementById("bouton1" ) set oBut.onclick = getRef("get_OK_button_click" )
initTimer(30) err.clear on error resume next oSh.appActivate "BrightStor Arcverse v.9" oIE.Visible = true
'Wait until the user click on the button "OK" Do until myTimer() WScript.Sleep 100 Loop
if test then wscript.echo "Démarrage de la sauvegarde"
'Close MSIE and the WEB IHM oIE.quit 'Reset objects variables set oIE = nothing set regExp = nothing
'Init Timer in second sub initTimer(timeOutToSet) startTime = timer timeOut = timeOutToSet end sub
'Timer function myTimer dim currentTime currentTime = timer if currentTime - startTime >= timeOut then myTimer = true end if end function
'Event Handler 'Click the button OK result in hidding the IHM sub get_OK_button_click oIE.Visible = 0 end sub ]]> </script> </job> </package>
Quand je lance ce script en local sur ma machine Win XP Pro SP2, aucun problème, tout baigne. Maintenant corsons le tout en utilisant un autre script, "lanceur" (trop long pour être posté ici), qui me permet de lancer le script vu + haut sur une autre machine de notre réseau local. Quand je test le tout en local (machine depuis laquelle le script est envoyé = machine cible = ma machine), tout baigne. Mais quand je lance le script depuis une autre machine, W2K server SP4, le script envoyé sur la machine cible s'éxécute bien, j'ai pu le tester en mode déboguage mais l'assignation : oIE.Visible = true ne fonctionne plus dans ce cas. Curieusement cette propriété semble protégée en écriture. La fenêtre n'est donc jamais affichée. C'est vraiement étrange car toutes les autres propriétés de mon instance oIE sont modifiables. Je n'y comprends rien ??? Juste pour info., le script "lanceur", utilise en autres, un objet WSHController et sa méthode createScript.
Marsh Posté le 06-01-2006 à 15:36:42
Bonjour,
Je galère depuis un bon bout de temps sur un problème d'accès à une propriété de l'objet COM "InternetExplorer.Application", mon but étant de piloter une fenêtre HTML depuis un script WSH.
Voici un script relativement basique qui me permet d'afficher une page HTML, dans mon cas un message d'alerte :
<?xml version="1.0" encoding="iso-8859-1" standalone="yes"?>
<package>
<job>
<meta http-equiv="Content-Type" content="text/xml; charset=iso-8859-1"/>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
<script type="text/vbscript" language="vbscript">
<![CDATA[
option explicit
'Initialization
const test = false
'Variables
'Object MSIE(Microsoft Internet Explorer)
dim oIE
'Object Shell
dim oSh
'Button objects
dim oBut
'Flag to the WEB IHM control
'used to know when start the backup
dim startBackup
'Object RegExp (Regular Expression)
dim regExp
'Object shell
'dim oSh
'String
dim sScriptPath
'Variables used by the timer
dim startTime, timeOut
'Initialization
'Get script current directory
set regExp = new RegExp
regExp.pattern = wScript.ScriptName
sScriptPath = regExp.replace(wScript.ScriptFullName, "" )
'Instanciate an object shell
set oSh = CreateObject("wscript.shell" )
'Instanciate the object I.E.
set oIE = createObject("InternetExplorer.Application" )
oIE.Navigate ""& sScriptPath & "svgAuto.htm" &""
oIE.Width = 400
oIE.Height = 380
oIE.ToolBar = 0
oIE.MenuBar = 0
oIE.StatusBar = 0
'Wait till MSIE is ready
Do
WScript.Sleep 100
Loop While oIE.Busy = 1
'Connect to the event handler
set oBut = oIE.document.getElementById("bouton1" )
set oBut.onclick = getRef("get_OK_button_click" )
initTimer(30)
err.clear
on error resume next
oSh.appActivate "BrightStor Arcverse v.9"
oIE.Visible = true
'Wait until the user click on the button "OK"
Do until myTimer()
WScript.Sleep 100
Loop
if test then wscript.echo "Démarrage de la sauvegarde"
'Close MSIE and the WEB IHM
oIE.quit
'Reset objects variables
set oIE = nothing
set regExp = nothing
'Init Timer in second
sub initTimer(timeOutToSet)
startTime = timer
timeOut = timeOutToSet
end sub
'Timer
function myTimer
dim currentTime
currentTime = timer
if currentTime - startTime >= timeOut then
myTimer = true
end if
end function
'Event Handler
'Click the button OK result in hidding the IHM
sub get_OK_button_click
oIE.Visible = 0
end sub
]]>
</script>
</job>
</package>
Quand je lance ce script en local sur ma machine Win XP Pro SP2, aucun problème, tout baigne.
Maintenant corsons le tout en utilisant un autre script, "lanceur" (trop long pour être posté ici), qui me permet de lancer le script vu + haut sur une autre machine de notre réseau local. Quand je test le tout en local (machine depuis laquelle le script est envoyé = machine cible = ma machine), tout baigne. Mais quand je lance le script depuis une autre machine, W2K server SP4, le script envoyé sur la machine cible s'éxécute bien, j'ai pu le tester en mode déboguage mais l'assignation : oIE.Visible = true ne fonctionne plus dans ce cas. Curieusement cette propriété semble protégée en écriture. La fenêtre n'est donc jamais affichée. C'est vraiement étrange car toutes les autres propriétés de mon instance oIE sont modifiables. Je n'y comprends rien ???
Juste pour info., le script "lanceur", utilise en autres, un objet WSHController et sa méthode createScript.
Etrange non ?
Merci d'avance,
Nico