perte de focus sur une appli a cause dun script le controlant
Bonjour,
Apres de longues recherches sur notre ami Google, jai rien trouver a propos de mon probleme. Je fais donc appel a la population de ce forum pour m'aider, svp.
Situation: Je lance depuis un logiciel de gestion commercial un script (vbs) pour lancer des impressions, mon script simulant les touches du clavier pour selectionner les diverses options necessaires (imprimante etc). Mais a 2 reprises en debut de script, jai besoin de faire un clic a la souris pour cocher une option, le clavier me permettant pas d'y acceder (avec 'tab'). Jai donc choisi d'afficher un msgbox specifiant de cocher cette option, puis l'utilisateur fait 'ok' sur mon msgbox et le script reprend. J'utilise egalement un 3ieme msgbox bloquant dans le script (pour une autre raison bref...)
Probleme: A priori tout se passe bien comme je le veux sauf lors de l'apparition de la 3ieme Msgbox. Le bouton s'affiche bien demandant a l'utilisateur de faire 'ok' pour continuer le script. Mais dans ce cas, je n'ai plus la possibilité de cliquer dans mon logiciel, je n'arrive pas a remettre le focus sur cette appli en cliquant avec la souris. Je recupere la main sur mon appli seulement quand je clic sur 'ok' mais l'option que je voulais cocher n'est alors pas coché et le script continue son execution...
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101
| SUB Imprim(NomModele,typedoc)
Dim oSheel
Dim monBouton
Dim etatBouton
Set oSheel = Wscript.CreateObject("Wscript.Shell")
if typedoc = 1 then
'impression des etiquettes
'bouton imprimer
oSheel.SendKeys("+{F5}")
Wscript.sleep(1000)
oSheel.SendKeys(NomModele)
etatBouton = 0
' vbYesNo
monBouton = msgbox("Appuyer sur ok quand le tri est selectionné",0,"En attente")
while etatBouton = 0
if monBouton = vbOk then
etatBouton = 1
end if
Wscript.sleep(100)
Wend
While oSheel.appActivate("Sage 100 Gestion commerciale pour SQL Server - gecotest.gcm") <> True
WScript.Sleep 100
Wend
Wscript.sleep(300)
oSheel.SendKeys("{ENTER}")
...
...
oSheel.SendKeys("{ENTER}")
etatBouton = 0
monBouton = msgbox("Appuyer sur ok quand la premiere partie des impressions est terminée",0,"En attente")
while etatBouton = 0
if monBouton = vbOk then
etatBouton = 1
end if
Wscript.sleep(100)
Wend
Wscript.sleep(1000)
While oSheel.appActivate("Sage 100 Gestion commerciale pour SQL Server - gecotest.gcm") <> True
WScript.Sleep 100
Wend
else
Wscript.sleep(300)
'impression du bon de commande
'bouton imprimer
oSheel.SendKeys("+{F5}")
Wscript.sleep(1000)
oSheel.SendKeys(NomModele)
Wscript.sleep(10000)
'OK choix modele
etatBouton = 0
monBouton = msgbox("Appuyer sur ok quand le tri est selectionné",0,"En attente")
while etatBouton = 0
if monBouton = vbOk then
etatBouton = 1
end if
Wscript.sleep(100)
Wend
While oSheel.appActivate ("Sage 100 Gestion commerciale pour SQL Server - gecotest.gcm") <> True
WScript.Sleep 100
Wend
Wscript.sleep(300)
oSheel.SendKeys("{ENTER}") ...
...
oSheel.SendKeys("{ENTER}")
etatBouton = 0
Wscript.sleep(300)
end if
Set oShell = Nothing
END SUB
SW_SHOWNORMAL=1
'impression selon 1e modèle
Call Imprim("N:\Imprimés de ...l.bgc",1)
Wscript.sleep(300)
'impression selon 2er modèle
Call Imprim("N:\Imprimés de......bgc",2) |
Le probleme vient peut etre de la fonction appactivate que j'utilise mal, bref jai besoin d'aide car la je ne sais plus trop quoi faire...
Merci d'avance de vos reponses !