Centrer un HTA sous Vista / IE7

Centrer un HTA sous Vista / IE7 - VB/VBA/VBS - Programmation

Marsh Posté le 23-12-2009 à 19:51:52    

Hello Guy,
 
Je pense que c'est la premiere fois que je poste dans cette section du forum, j'espere ne pas me tromper de sous-catégorie...
 
J'ai fait un petit HTA qui utilise du code en provenance de MS...
Le code est simple...centrer la fenêtre du HTA...
 
Le voici:
 
 

Code :
  1. <html>
  2. <head>
  3. <title>Centered HTA</title>
  4. <HTA:APPLICATION
  5.      ID="objHTA"
  6.      APPLICATIONNAME="Centered HTA"
  7.      SCROLL="yes"
  8.      SINGLEINSTANCE="yes"
  9. >
  10. </head>
  11. <SCRIPT Language="VBScript">
  12.     Sub Window_Onload
  13.         strComputer = "."
  14.         Set objWMIService = GetObject("winmgmts:\" & strComputer & "rootcimv2" )
  15.         Set colItems = objWMIService.ExecQuery("Select * From Win32_DesktopMonitor" )
  16.         For Each objItem in colItems
  17.             intHorizontal = objItem.ScreenWidth
  18.             intVertical = objItem.ScreenHeight
  19.         Next
  20.         intLeft = (intHorizontal - 800) / 2
  21.         intTop = (intVertical - 600) / 2
  22.         window.resizeTo 800,600
  23.         window.moveTo intLeft, intTop
  24.     End Sub
  25. </SCRIPT>
  26. <body></body>
  27. </html>


 
Mon problème est que ce code fonctionne bien dans ma VM sous XP, mais une fois sous 2003 / Vista / Seven cela ne fonctionne pas...
Je pense plus que le problème est lié à l'OS ou l'IE qu'au code...
 
l'erreur est la suivante:
 
Ligne: 26
Caractère: 9
Erreur: Le type ne correspond pas.
Code: 0
 
Je me dit qu'il y a trés certainement qqu un ici qui connait le problème sur le bout des doigts...
 
Je me trompe ?
 
:)


---------------
-=Liens utiles sur Software & Réseaux= -=Installation automatisée de Windows 2000-XP-2003=- =Modérateur sur www.altirigos.com =-
Reply

Marsh Posté le 23-12-2009 à 19:51:52   

Reply

Marsh Posté le 24-12-2009 à 09:36:00    

Le message d'erreur donne une indication qu'il serait sans doute intéressant d'étudier.
En l'occurence, il y aurait un problème de type (de données, je présume).
window.moveTo s'attend à avoir des entiers. Peut-être que intLeft et intTop ne sont pas des entiers dans quelques cas particuliers qui se trouvent sur un système et pas sur l'autre.
Pour débugguer :
1. Mettre en commentaire la ligne du window.move pour vérifer que c'est bien elle qui cause le problème.
2. Si c'est cette ligne, essayer window.move avec des nombres en dur, juste pour voir si cette instruction marche.
3. Si ça marche, afficher intLeft et intTop avant leur utilisation. Cela ne m'étonnerait pas de voir qu'ils sont indéfinis ou bien ont une valeur aberrante dans certains cas.

Reply

Marsh Posté le 24-12-2009 à 19:00:36    

olivthill a écrit :

Le message d'erreur donne une indication qu'il serait sans doute intéressant d'étudier.
En l'occurence, il y aurait un problème de type (de données, je présume).
window.moveTo s'attend à avoir des entiers. Peut-être que intLeft et intTop ne sont pas des entiers dans quelques cas particuliers qui se trouvent sur un système et pas sur l'autre.
Pour débugguer :
1. Mettre en commentaire la ligne du window.move pour vérifer que c'est bien elle qui cause le problème.
2. Si c'est cette ligne, essayer window.move avec des nombres en dur, juste pour voir si cette instruction marche.
3. Si ça marche, afficher intLeft et intTop avant leur utilisation. Cela ne m'étonnerait pas de voir qu'ils sont indéfinis ou bien ont une valeur aberrante dans certains cas.


 
Effectivement, c'était bien ça...je m'en suis plus ou moins douté...mais avant que je me replonge dans le code, qqu un avait débuggé pour moi :)
 
Merci en tout pour ton aide :)
 
++


---------------
-=Liens utiles sur Software & Réseaux= -=Installation automatisée de Windows 2000-XP-2003=- =Modérateur sur www.altirigos.com =-
Reply

Marsh Posté le 24-12-2009 à 23:27:48    

Hello  :D  
 
je viens du C++ , (rien la bas)
... je veut preciser que le system n'a rien de problem
 
  intLeft = (intHorizontal - 800) / 2  peut retourner xxx.5 , non?
  alors c'est pas int (pas de pixel au niveau 0.5)
  ...... :sol:  

Reply

Marsh Posté le 26-12-2009 à 03:10:21    

__tomjost a écrit :

Hello :D  
 
je viens du C++ , (rien la bas)
... je veut preciser que le system n'a rien de problem
 
intLeft = (intHorizontal - 800) / 2 peut retourner xxx.5 , non?
alors c'est pas int (pas de pixel au niveau 0.5)
...... :sol:  


Je reviendrai sur le code corrigé dés que possible :)


---------------
-=Liens utiles sur Software & Réseaux= -=Installation automatisée de Windows 2000-XP-2003=- =Modérateur sur www.altirigos.com =-
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed