Les aventures du blog perdu

Tout et vraiment n'importe quoi !

jeudi 16 novembre 2006

VBScript facile

leonardoDepuis hier, je buche sur un problème concernant mon programme VBScript pour afficher et imprimer des états Crystal Report.
Le problème étant "comment faire pour que ma fenêtre d'aperçu ne se ferme pas immédiatement après son ouverture ?".

Et voici comment j'ai résolu mon problème :

  • Solution n°1 : lancer immédiatement l'impression avec la boîte de dialogue, mais inconvénient on n'a plus accès à la fenêtre
  • Solution n°2 : afficher une boîte de dialogue pour mettre en pause le script
    1. Utiliser les MsgBox, mais même inconvénient que la solution n°1
    2. Utiliser la fonction WScript.echo, la fenêtre d'aperçu est accessible mais la boîte de dialogue par se cacher derrière mon amas de fenêtres et tant que je n'ai pas cliqué dessus le script continue de tourner bien que j'ai fermé l'aperçu.
  • Solution n°3 : mettre en pause le script tant que la fenêtre d'aperçu est affichée, c'est-à-dire faire une boucle sur la fonction WScript.Sleep tant que la fenêtre existe
    1. Utilisons les fonctionnalités standards de VBScript, c'est-à-dire la collection Shell.Application.Windows, mais pas de chance la fenêtre d'aperçu Crystal Report n'y est pas inventoriée.... arghh
    2. En fouillant sur Internet (Google et Developpez.com), on tombe nez-à-nez avec la librairie Dynamic Wrapper (dynwrap.dll), quézaco ? simplement une petite librairie permettant de charger en VBScript des DLL, very userful ! Grâce à elle nous avons accès aux fonctionnalités de la fameuse librairie user32.dll dont la fonction qui nous intéresse FindWindowA.
      Bingo ! C'est la bonne solution ! Seul inconvénient, on est dépendant de la librairie, mais puisque ce script est déjà dépendant des librairies Crystal Report ce n'est pas un problème, une de plus ou de mois cela ne fait plus de différence.

"Qui a dit impossible ? c'est juste un peu plus compliqué !"


Commentaires

Poster un commentaire