Afficher le contenu d'un hta dans une frame

Signaler
Messages postés
6
Date d'inscription
mardi 8 avril 2003
Statut
Membre
Dernière intervention
11 juillet 2007
-
Messages postés
197
Date d'inscription
jeudi 27 avril 2006
Statut
Membre
Dernière intervention
10 juillet 2011
-
Bonjour,

Je développe actuellement une petite applic qui permette d'intégrer des scripts autohotkey pour automatiser certaines actions. Le but est d'avoir des onglets pour chaque catégorie, chaque onglet contenant des scripts qui se lancent depuis des boutons avec pour certains des paramètres passés selon ce qu'on saisit dans des champs texte.

L'autohotkey ne permettant pas d'avoir une interface graphique à proprement parler, je suis parti sur du hta, j'arrive à lancer mes scripts via du VBS, c'est OK.

Par contre, j'aimerais afficher le contenu d'un fichier hta dans une frame html, comme je le ferai avec une page html.

Le souci c'est que je ne sais pas comment par exemple depuis un clic sur un onglet ouvrir un fichier hta et l'afficher dans une frame définie, quand j'appelle un hta en mettant une frame pour l'ouvrir, j'ai un pop-up à la place...

Quelqu'un a-t-il une idée?

Merci d'avance!

17 réponses

Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
36
Bonjour,
>>un fichier hta dans une frame html
    à priori, il suffit de mettre le paramètre application="yes"
       dans la balise <frame> ( avec la page principale en .htm ou .hta )



<hr />



Cordialement                Bul    
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
36
je n'avais pas tout lu...
>>quand j'appelle un hta en mettant une frame pour l'ouvrir
    c'est le src="nom.hta" qui fixe la page à charger...
    j'espère que que tu "appelles" comme çà...  car ouvrir une pop-up.... bizarre.


<hr />



Cordialement            Bul    
Messages postés
6
Date d'inscription
mardi 8 avril 2003
Statut
Membre
Dernière intervention
11 juillet 2007

Merci pour la réponse, effectivement j'ai déjà essayé ça...

En fait j'ai par exemple (pour faire simple) un fichier test.hta comme suit :

<html>
<frameset rows="150,500">
  <frame src="tabs.html" name="tabs" application="yes">
  <frame src="content.hta" name="content" application="yes">
</frameset>
</html>

La frame "tabs.html" contient des onglets sur lesquels je clique pour afficher du contenu dans la frame "content", là où je voudrais afficher un fichier hta différent selon l'onglet sélectionné.
Le lien dans le fichier "tabs.html" est tout bête : .

La frame "content" devrait afficher par défaut le contenu de "content.hta", pour le moment j'obtiens seulement le warning de sécurité Windows... si je choisis "ouvrir", il m'ouvre une 2ème fenêtre, ce n'est pas ce que je veux, j'aimerais que le contenu apparaisse directement dans la frame.
Ensuite ce hta serait remplacé par celui que j'appelle depuis les onglets.

Mon fichier "content.hta" est simplement :

<html>

Fichier hta affiché dans une frame

</html>

J'espère avoir clarifié mon souci...
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
36
page principale :





<html>
<frameset rows="150,500">
  <frame src="t1.htm" name="t1" application="yes">
  <frame src="" name="t2" application="yes">
</frameset>
</html>

t1.htm :

[javascript:void(parent.t2.location.href='t2.htm'); lien]

pas testé dans tous les sens ( htm et/ou hta ) mais ça devrait le faire....

par contre, si ce n'est pas résolu, ne coche pas "résolu",
    d'autres personnes pourraient ne plus intervenir
    croyant l'affaire terminée....

<hr />


Cordialement                Bul    
Messages postés
6
Date d'inscription
mardi 8 avril 2003
Statut
Membre
Dernière intervention
11 juillet 2007

Désolé j'ai eu le clic un peu rapide... j'ai corrigé ça.

En fait ça fonctionne bien quand j'appelle un fichier htm depuis le lien, mais si j'appelle un fichier hta dans la frame t2, j'ai le warning Windows et une 2ème fenêtre s'ouvre au lieu de s'afficher dans la frame...

Voici le code que j'ai utilisé : [javascript:void(parent.t2.location.href='content.hta'); lien]

Je ne sais pas si ce que je veux faire est vraiment possible?

Merci
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
36
alors, par exemple :    la page principale : hta                les frames : htm
    [javascript:void(parent.t2.location.href='content.htm'); lien]
    les ActiveX nécessaires dans la page principale.



<hr />



Cordialement                Bul    
Messages postés
6
Date d'inscription
mardi 8 avril 2003
Statut
Membre
Dernière intervention
11 juillet 2007

J'ai bien saisi comment appeler une page dans une frame grâce à cette fonction.

Mais si je comprends bien, il faut donc un ActiveX pour que j'affiche un hta dans une frame html?

Je n'y connais pas grand chose en ActiveX, comment m'y prendre concrètement au niveau du code?

Petite précision, mon applic sera un hta qui tournera en local sur des postes client, avec donc une page en hta séparée en frames dans lesquelles je voudrais appeler d'autres fichiers hta.

Merci
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
36
>>

Mais si je comprends bien, il faut donc un ActiveX pour que j'affiche un hta dans une frame html?
pas du tout.

on utilise un .hta pour éviter les messages d'avertissements
    lors de l'utilisation d'un Activex.
si tu n'utilises pas d'ActiveX, reste en .htm

si tu utilises des activeX, mets les dans la page principale,
    et appelle la .hta
    les frames, appelle les htm et, s'ils doivent
        utiliser les ActiveX, ce sera ceux de la page principale.







<hr />



Cordialement                Bul    
Messages postés
6
Date d'inscription
mardi 8 avril 2003
Statut
Membre
Dernière intervention
11 juillet 2007

Je n'ai jamais parlé d'ActiveX, j'ai le warning sans en utiliser, simplement en essayant d'intégrer un hta dans une frame.

Si j'utilise du hta, c'est pour lancer des scripts (via du VBS), ce que je ne pourrais pas faire en html.
Je dois avoir un fichier hta dans mes frames, pas du html, sinon je ne peux pas utiliser ces scripts...

Je ne sais toujours pas comment simplement afficher le contenu d'un fichier hta tout simple dans une frame html depuis un lien?
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
36
je n'ai pas tout suivi...





>>Je n'ai jamais parlé d'ActiveX, j'ai le warning sans en utiliser,

    si tu as un message d'utilisation d'ActiveX, c'est que tu en utilises...

>>simplement en essayant d'intégrer un hta dans une frame.
    ah... si c'est ce message, ( chargement hta ), mets un htm.

>>



c'est pour lancer des scripts (via du VBS),

    qu'appelle tu lancer des Scripts VBS ?
    comment tu les lances ? pas avec un ActiveX ?
    pourquoi du vbs d'ailleurs... presque tout est faisable en JavaScript

>>ce que je ne pourrais pas faire en html.
    quelques très très très rares choses sont uniquement faisable en .HTA


je vais réexpliquer :

    la page principale, un .hta, qui contient les ActiveX.. si besoin est
    ( mais sinon, s'il n'y a pas d'ActiveX... des .HTM suffisent !
    les frames : des .htm, qui si elles utilisent les ActiveX, appellent la page principale ....

    ch'tit exemple :

    page_principale.hta

<html>
<script type="text/javascript">
    var wsh=new ActiveXObject("WScript.Shell");
</script>
<frameset rows="150,500">
  <frame src="t1.htm" name="t1" application="yes">
  <frame src="t3.htm" name="t2" application="yes">
</frameset>
</html>

    t1.htm

[javascript:void(parent.t2.location.href='t2.htm'); lien]

    t2.htm

t2

       





<hr />



Cordialement                Bul    
Messages postés
6
Date d'inscription
mardi 8 avril 2003
Statut
Membre
Dernière intervention
11 juillet 2007

Je crois qu'on ne s'est pas bien compris…


Je réexplique ce que je veux faire avec un exemple simple :



Page_principale.hta





<html>
<frameset rows="150,500">
<frame src="tabs.html" name="tabs" application="yes">
<frame src=" " name="content" application="yes">
</frameset>
</html>


La frame "tabs.html" contient des onglets. Quand je clique sur ces onglets, j'aimerais charger le contenu d'un autre fichier hta (fichier.hta) dans la frame "content".



Fichier.hta


<html>
<head><title>Lancement script ahk depuis hta</title><HTA:APPLICATION VER="1.0" NAVIGABLE = "yes">
<script type="text/Vbscript">
<!--
Sub monBouton_onclick()
Set manipuleFichiers = CreateObject("WScript.shell")
manipuleFichiers.run("script.ahk") 'On lance le script ahk!zzzz
End Sub
-->
</script>
</head>

<!-- Je vais créer un bouton nommé "monBouton" -->

</html>


J'utilise du hta et pas du html car je veux lancer un script ahk (autohotkey) depuis là.


Actuellement, si je charge mon hta depuis un onglet par la commande [javascript:void(parent.content.location.href='fichier.hta'); Onglet1] il m'ouvre mon fichier.hta mais après m'avoir demandé si je veux l'exécuter ou le sauver, ce n'est pas un message d'ActiveX (je n'ai peut-être pas été assez clair, désolé).


Merci pour ton aide!
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
36
je ne crois pas que je peux t'expliquer plus que ce que j'ai déjà fait !
    ma réponse correspond complètement/totalement à ton exemple !!!!






Set manipuleFichiers = CreateObject("WScript.shell")
    et ça ? si ce n'est pas un ActiveX qu'est-ce que c'est ?



    je disais qu'on peut faire le même chose en Javascript
          c'est même exactement l'exemple que je donnais !!!!
          le lancement d'un exécutable



    mais enfin.... en vbs ou en javascript, met l'activeX
       (    








Set manipuleFichiers = CreateObject("WScript.shell")








       ou 



var wsh=new ActiveXObject("WScript.Shell");







           ce qui est strictement la même chose ! )
                   dans la page principale, qui tu nommes .hta

        les frames, nomme les .htm et fait appel aux ActiveX
            comme dans mon exemple....
  

      et appel vbscript/javascript depuis l'un ou l'autre : pas de souci.






<hr />



Cordialement                Bul    
Messages postés
68
Date d'inscription
jeudi 14 septembre 2006
Statut
Membre
Dernière intervention
10 septembre 2010

oui, c'est clair ! Bultez à raison ! sa réponse correspond totalement à ton exemple !!!! Je ne vois pas ou tu cherche la petite bête !

Tous mes logiciels ici !
Messages postés
197
Date d'inscription
jeudi 27 avril 2006
Statut
Membre
Dernière intervention
10 juillet 2011

Salut Frenchyfred,
je tombe sur ton probleme, et voila deja comment shunter le message de windows pour ouvrir le hta a partir de ta frame d'onglet.
Reste a placer le hta dans la frame contents.
Je te tiens au courant si j'y arrive

PS: Je prend le post un peu en cour, mais si ca peut t'aider

Dis moi si je fais fausse route

Fichier index.hta:
desolé si j'en ai mis des tonnes dans les options mais c'est utile si tu te lances dans le HTA

<html>
<HEAD>
 <TITLE>Probleme</TITLE>


<HTA:APPLICATION
   ID = "PRB"
   APPLICATIONNAME = "PRB" |utile pour le singleinstance
   CAPTION = "yes"   | barre de titre
   BORDER = "thin"   | style bordure thick, dialog, none ou thin
   ICON = "**.ico"
   SHOWINTASKBAR = "yes"| apparait dans la barre des titres
   SINGLEINSTANCE = "no"| ouvrir le HTA autant de fois que l'on veut
   WINDOWSTATE = ""  | état d'initialisation du HTA Normal, Maximize, ou Minimize
   SCROLL = "no" | autorise barre de défilement
   SCROLLFLAT = "yes"   |barre de défilement en relief
   VERSION = "2.6"      
   SELECTION = "yes" |Selection du texte et clic droit autorisés
   CONTEXTMENU = "yes" |clic droit autorisé
   MAXIMIZEBUTTON = "yes" |Autorise les boutton Agrandir
   MINIMIZEBUTTON = "yes" |Retrcir
   NAVIGABLE = "yes" |Autorise les lien dans le HTA
   >
</head>


<!-- frames -->
  <frameset rows="150,500">
 <frame src="tabs.html" name="tabs" application="yes">
 <frame src=" " name="content" application="yes">
  </frameset>





</html>

Fichier tabs.html:
le fichier ou tu a en réalité tes onglets (si j'ai bien compris)

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">


<HTML>
<HEAD>
 <TITLE>tabs</TITLE>


<!--pour ouvrir un hta a partir d'un hta sans message d'erreur-->


<script language ="VBScript" type= "text/Vbscript">
'ASTUCE POUR NE PAS AVOIR DE MESSAGE D ERREUR
Sub EnvoieDocHTA(lien)
Set manipuleFichiers = CreateObject("WScript.shell")
manipuleFichiers.run(lien) 'On lance le HTA !
End Sub
</script>


</HEAD>




 [# test]



</HTML>

Fichier PageHTAaCharger.hta: (celui que tu a fourni plus haut)
Si j'ai bien tout suivit, c'est a partir de ce fichier que tu veux lancer le autokey, non????
<html>
<head>
<title>Lancement script ahk depuis hta</title>


<HTA:APPLICATION VER ="1.0" NAVIGABLE = "yes">


<script type="text/Vbscript">
 <!--
 Sub monBouton_onclick()
 Set manipuleFichiers = CreateObject("WScript.shell")
 manipuleFichiers.run("script.ahk") 'On lance le script ahk!zzzz
 End Sub
 -->
</script>


</head>



 <!-- Je vais créer un bouton nommé "monBouton" -->
 



</html>

FIN.

L'entre-aide est la force de notre savoir
Messages postés
197
Date d'inscription
jeudi 27 avril 2006
Statut
Membre
Dernière intervention
10 juillet 2011

Progression...
change le fichier tabs.html par ca:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">


<HTML>
<HEAD>
 <TITLE>tabs</TITLE>


<!--pour ouvrir un hta a partir d'un hta sans message d'erreur-->


<script language="VBScript" type="text/Vbscript">
'ASTUCE POUR NE PAS AVOIR DE MESSAGE D ERREUR
Sub EnvoieHTA(lien)
Set manipuleFichiers = CreateObject("WScript.shell")
manipuleFichiers.run(lien) 'On lance le HTA !
End Sub
</script>


 




<script language="javascript" type="text/javascript">
function Place()
{
  parent.frames.document.getElementById('content').src="PageHTAaCharger.hta";
}


function Place2()
{
  parent.frames.document.getElementById('content').src="EnvoieHTA('PageHTAaCharger.hta')";
}
</Script>




</HEAD>




 [# test1]

 [PageHTAaCharger.hta test2]

 [# test3]

 [# test4]



</HTML>




Fin.




Test 1 ouvre le fichier hta SANS message d'erreur.
Test2 et 3 ouvre le fichier hta AVEC message d'erreur
Test4 change bien la frame du bas, mais avec quoi?? Là je bug.
Mais on ouvre bien un hta dans une frame, sans message=> je tien le bon bout, reste a comprendre ce qui ce passe.

Cependant, Vu l'heure, bonne nuit




L'entre-aide est la force de notre savoir
Messages postés
197
Date d'inscription
jeudi 27 avril 2006
Statut
Membre
Dernière intervention
10 juillet 2011

oups, un oubli vu l'heure hier soir,
 dans le fichier index, il faut ajouter le id dans les frame:

<frame src= "tabs.html" name="tabs" id="tabs"  application ="yes">
<frame src= " " name="content" id="content"  application ="yes">

L'entre-aide est la force de notre savoir
Messages postés
197
Date d'inscription
jeudi 27 avril 2006
Statut
Membre
Dernière intervention
10 juillet 2011

Le plus simple fonctionne:

Dans le fichier tabs.html, ajoute ce lien
 [PageHTAaCharger.html test5]

Re-nome le fichier PageHTAaCharger.hta en PageHTAaCharger.html et dit moi si ca marche.

En attendant ta reponse.........

L'entre-aide est la force de notre savoir