Browse open close
JJV20-Mar-2007/10:25:05+1:00
bonjour,

j'ai deux petites questions.

;Ouverture de la fenetre du navigateur

browse %index.html

      ok ça je sais faire.

1/Comment fermer cette fenetre, apres 5,10.. secondes?

2/Comment choisir un navigateur? firefox opéra ie



Bonne journée a tous.

JJV

à bientôt
REBOL DevCon 2007 Paris
10 & 11 Mai
Didec20-Mar-2007/12:03:49+1:00
Choisir un navigateur : 'browse demande au système de lancer le navigateur, donc c'est celui par défaut au niveau du système qui se lance. Pour plus de précisions : quel O.S. ???

Pour le fermer au bout d'un certains temps, je vois pas trop pour le faire depuis Rebol.
J'imagine, qu'il faut mettre dans la page générée et affichée un lien REDIRECT temporisé qui lance un javascript qui lui ferme la fenêtre. Mais la plupart des navigateurs demandent une confirmation dans ce cas.
Goldevil20-Mar-2007/16:21:45+1:00
Une autre piste est de ne pas utiliser la commande browse mais la commande call. Cette dernière permet de lancer n'importe quelle autre commande.

Par exemple:

call "c:\program files\mozilla firefox\firefox.exe http://www.rebol-france.org"


Après 10sec (wait 0:0:10) , tu peux relancer une autre commande qui tue proprement l'autre process. Il y a la commande kill en Unix.
Faut juste avoir le PID du premier process (le browser) et cela je sais qu'on peut le retrouver aussi en ligne de commande.

Le problème étant que tu ferme tout le navigateur. Si tu veux fermer juste une fenêtre, c'est plus compliqué. Il me semble que firefox n'accepte pas ce genre de paramètres en ligne de commande ( http://kb.mozillazine.org/Command_line_arguments )
shadwolf21-Mar-2007/6:57:10+1:00
pas forcement pkill marche aussi avec le nom de l'application...

tu peux aussi faire du "bricolage" étant un adepte de la perseuse et autre scie-sauteuse voici le genre de truc que je propose:

Une premiere variable qui contient un code java scipt dont le but est de fermer le navigateur au bout d'un timer

Une deuxieme variable dans la quelle on stock la page cible chargée au moyen de la commande read

On injecte dans la 2eme variable le code du java script. parse avec une tite regle qui place le javascript avant la balise "<body" (on garde tout le reset et on inject notre petit code javascript) de la page ce serra nickel ^^

En dernier on balancer browse avec le contenu de la 2eme variable.

Apres rafinement ultime tu peux faire un fichier contenant les urls à "visiter"

--------------------------------
REBOL []
code_java_scrip:{<BODY onLoad=""setTimeout(window.close, 5000)""}

; setTimeout appel widow.close au bout X milisecondes

var_page: read http://www.google.fr

msg_block: ""

all-chars: charset [#" " - #"^(FF)"]
deb: fin: url: none
rules: [
"<body" (append msg-block code_java_scrip )
| deb: all-chars fin: (append msg-block copy/part deb fin)
]

parse/all msg_block rules

write %tmp.htm msg_block

browse %tmp.htm

-----------------------

J'ai pas tester ce code écrit a l'arache mais avec un petit peux de travail ca devrait être bon. C'est surtout sur la regele de parse qu'il faut travailler
shadwolf21-Mar-2007/6:59:47+1:00
parse/all msg_block rules -> parse/all var_page rules

evidement petite faute d'inattention ^^
JJV22-Mar-2007/11:25:17+1:00
Bonjour,

merci des réponses.

pour répondre à DideC:
quel O.S. ??? Xp pro.

Je reformule une les questions.
--- Après avoir générés des pages HTML gràce "write"
rebol[
write page1.html
browse page1.html
]
je les consulte gràce "browse" (par défaut au niveau du système. firefox)


l'idée c'est de pouvoir ouvrir 3 programmes Firefox, IE et Opéra et de voir immédiatement le rendu de ma page page1.html dans ces 3 navigateurs.

Puis au bout de x secondes elles se fermeraient.



La méthode Goldevil
j'ai essayé
call "c:\program files\mozilla firefox\firefox.exe http://www.rebol-france.org" ok ça marche pour visiter un site.

mais j'ai essayé
call "c:\program files\mozilla firefox\firefox.exe %/c/monsite/page1.html" et la ça ne marche pas. Il ajoute en préfixe http:// et non en local.


Et pour le moment je n'ai essayé la proposition de shadwolf.
dans quelles heures.

Encore merci
JJV
Goldevil22-Mar-2007/13:16:24+1:00
La ligne suivante ne peut en effet pas fonctionner.

call "c:\program files\mozilla firefox\firefox.exe %/c/monsite/page1.html"

En fait, c'est comme si tu tapais ceci dans la ligne de commande :

c:\program files\mozilla firefox\firefox.exe %/c/monsite/page1.html

Mais firefox ne comprend pas cette syntaxe de nom de fichier avec le % . C'est du Rebol. Ta chaîne de caractères est donc mal construite.

Voici une solution :

call "c:\program files\mozilla firefox\firefox.exe file:///c:\monsite\page1.html"

En pratique, il est tout aussi valable de faire ceci :

call "c:\program files\mozilla firefox\firefox.exe c:\monsite\page1.html"

Firefox convertit tout seul en URL file:///...

Attention, je n'ai jamais fait attention aux paramètres de ligne de commande de Internet Explorer et de Opera. C'est peut-être assez différent.
jipé22-Mar-2007/13:16:53+1:00
Salut,
essaye plutôt comme ça:
call "c:\program files\mozilla firefox\firefox.exe c:\monsite\page1.html"
Goldevil22-Mar-2007/16:26:51+1:00
Yeah! J'ai répondu 9 secondes avant Jipé.
Qu'est-ce que j'ai gagné ?

JJV22-Mar-2007/22:40:34+1:00
yeah une bière Goldevil Avec Carl DevCon2007. Mais aussi un grand merci à jipé

Merci, maintenant je vais essayé la proposition de shadwolf pour la fermeture des pages

JJV
Didec23-Mar-2007/9:27:33+1:00
Pour éviter le chemin en dur, tu peux composer la chaine à passer à 'Call.
Pour convertir un chemin Rebol (ex: %/c/monsite/mapage.html) en chemin local (donc sous XP : c:\monsite\mapage.html) il faut utiliser 'to-local-file
mapage: %/c/monsite/mapage.html
monnavigateur: "c:\program files\mozilla firefox\firefox.exe"
call rejoin [monnavigateur " " to-local-file mapage]
JJV26-Mar-2007/21:03:40+2:00
bonsoir,
Merci pour l'info cela me permet de comprendre des éléments.

shadwolf, j'ai beau essayé ton code, mais ça ne marche pas chez moi, merci si tu as le temps!!!


JJV
Philippe27-Mar-2007/16:26:56+2:00
Salut, JJ,

Le plus dur n'est pas d'ouvrir le navigateur, mais de le fermer, ce qui suppose soit de killer le process, soit de tenter de fermer la fenêtre du navigateur via un window.close, comme suggéré. Outre le fait que les syntaxes soient différentes entre IE et FF, et sans doute Opera, les browsers sont assez chatouilleux sur ce genre de code.

Je te propose une solution, elle n'est pas rebol, <i>désolé<i> pour les puristes, mais elle marche pour visualiser une page html successivement avec plusieurs navigateurs (ici IE et FF, je n'ai pas Opéra), il te suffit de créer un script test.vbs, et de changer la variable Url et/ou le timing.

Le script peut prendre deux variables : l'url et la durée de visualisation, mais sinon, il prend des variables par défaut. Tu peux (eventuellement) via un call rebol appeler ce script, les paths et chemins sont alors à adapter :
(adapter le chemin vers FF et IE à ton cas).

------> début code fichier test.vbs <--------
 
Dim ieapp, Url, Timing, WshShell, pth, env

If Wscript.Arguments.length = 2 Then 
  Url = Wscript.arguments(0)
  Timing = Wscript.arguments(1)
Else
  Wscript.Echo "Nombre d'arguments incorrect -> Mode Defaut !"
  Url = "http://www.rebol.com"
  Timing = 2000   

' on sort sinon (decommenter ci-dessous)
'  Wscript.Quit

End if


'---------Test IExplorer ---------------
Set ieapp = CreateObject("InternetExplorer.Application") 
ieapp.Visible = 1
ieapp.Navigate(Url)
Wscript.Sleep Timing 
'MsgBox "Fin IE"
ieapp.quit
Set ieapp = Nothing

'--------Test Firefox ----------------
Set WshShell = WScript.CreateObject("WScript.Shell")
Set env = WshShell.Environment("User")
env("MOZ_NO_REMOTE") = 1
pth = "E:\\Applis\\Mozilla Firefox\\firefox.exe " &  Chr(34) & Url & Chr(34) 

WshShell.Exec(pth) 
Wscript.Sleep Timing 
env("MOZ_NO_REMOTE") = 0 

' kill du process Firefox
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colProcessList = objWMIService.ExecQuery _
    ("Select * from Win32_Process Where Name = 'Firefox.exe'")

For Each objProcess in colProcessList
    objProcess.Terminate()
Next

Set WshShell = Nothing
Set env = Nothing
'MsgBox "Fin Firefox"

'----------END ---------------



------> fin du code de test.vbs <-----

Maintenant, pour fermer une fenêtre ouverte de navigateur, il y a la petite case en haut à droite, c'est rapide aussi.

===Philippe
Philippe27-Mar-2007/16:28:50+2:00
Et je m'excuse de choquer la population avec du vbs.


===Philippe
shadwolf9-Apr-2007/12:52:17+2:00
Philippe esperons que ton fils ne tombe jamais sur ce post .. Quelle honte vbs non serrieu tu me donnes envi de pleurer ... enfin ceci etant dit j'ai bcp rit il y a quelques années avec vbs et le fameu et dangereusissime virus "I Love you" (c un blague evidement ^^ dangereux pour les images et les mp3 a la limite ... si seulement au lieu d'effacer les fichiers multimedia il avait effacé gui32.dll, linux serrait peut être leader aujourd'hui [regrets, regrets, regrets ...])

Login required to Post.


Powered by RebelBB and REBOL 2.7.8.4.2