IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBScript Discussion :

Détecter la présence d'une fenêtre


Sujet :

VBScript

  1. #1
    Invité
    Invité(e)
    Par défaut Détecter la présence d'une fenêtre
    Bonjour,

    Dans le cas d'un développement d'un VBScript pour l'impression de rapport Crystal Report 8 (oui, il y a encore des gens qui travaillent avec), je rencontre le problème suivant : lorsque j'ouvre la fenêtre d'aperçu avant impression celle-ci rend immédiatement la main au VBScript qui se termine fermant ainsi la fenêtre.

    Ma première idée a été la suivante : ajouter une MsgBox, mais on ne peut plus prendre la main sur la fenêtre

    Deuxième idée: ajouter un Wscript.echo mais ce n'est pas une solution très "propre"

    La solution que j'ai retenu, ce serait de mettre en pause le VBScript tant que la fenêtre d'aperçu existe. J'ai donc tenté quelque chose comme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    Dim shAppWins
    Dim a, nb
    Dim bFind
    Set shAppWins = CreateObject("Shell.Application").Windows
    nb = shAppWins.count
    bFind = false
    For  a=0 To nb-1
       If shAppWins.item(a).locationName = "Visulisation RPT" Then
          bFind = true
          Exit For
       End If
    Next
     
    While shAppWins.item(a).locationName = "Visulisation RPT" And bFind = true
       Sleep(100) 'en l'absence de DoEvents en VBS
    Wend
    Le soucis est que la fenêtre n'est jamais trouvé, car elle n'existe pas dans la collection shAppWins alors qu'elle est bien affichée avec le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    '...
    Set oCRApp = CreateObject("Crystal.CRPE.Application")
    Set oRep = oCRApp.OpenReport(strRPTPath & strRPTFile)
    oRep.Preview "Visualisation RPT"
    '...
    Si quelqu'un à une idée ou mieux une solution, je suis preneur.

    Merci.
    Dernière modification par Invité ; 16/11/2006 à 09h48.

  2. #2
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Points : 4 061
    Points
    4 061
    Par défaut
    mettre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    oRep.Preview "Visualisation RPT"
    dans une boucle, est ce que cela pourrait marcher ?
    Pourquoi faire compliqué lorsque l'on peut faire encore plus compliqué.

  3. #3
    Invité
    Invité(e)
    Par défaut
    Non, j'y avais aussi pensé mais cela réouvre à chaque fois la fenêtre et la rend inutilisable, en revanche attention aux épileptiques

  4. #4
    Invité
    Invité(e)
    Par défaut
    Voici la solution que j'ai trouvée (inspirée du post http://developpez.net/forums/showthread.php?t=220699) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    ' Boucle permettant d'interagir avec la fenêtre d'aperçu
    Dim oWrap, hWnd
    Set oWrap = CreateObject("DynamicWrapper") 'instancie l'objet API
    oWrap.Register "USER32.DLL", "FindWindowA", "i=ss", "f=s", "r=h" 'handle de la fenêtre du script
    Do
        WScript.Sleep 100
    Loop While oWrap.FindWindowA(vbNullString, "Visualisation RPT")
    Cette solution nécessite l'utilisation de la librarie dynwrap.dll (http://www.script-coding.info/dynwrap.html)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Comment détecter la fermeture d'une fenêtre par la croix?
    Par man_coef dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 23/06/2008, 16h34
  2. Réponses: 5
    Dernier message: 13/06/2007, 16h15
  3. détecter la présence d'une chaîne de caractères
    Par nadalator666 dans le forum Langage
    Réponses: 1
    Dernier message: 28/03/2007, 11h13
  4. Comment détecter la fermeture d'une fenêtre?
    Par Masmeta dans le forum C++Builder
    Réponses: 1
    Dernier message: 18/01/2007, 16h02
  5. Détecter l'ouverture d'une fenêtre
    Par Matt2094 dans le forum Delphi
    Réponses: 9
    Dernier message: 30/08/2006, 12h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo