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:
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:
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.