Pb avec la fonction Shell et son utilisation

cs_cissou06 Messages postés 124 Date d'inscription mercredi 2 juillet 2003 Statut Membre Dernière intervention 16 mai 2007 - 8 août 2003 à 10:31
cs_cissou06 Messages postés 124 Date d'inscription mercredi 2 juillet 2003 Statut Membre Dernière intervention 16 mai 2007 - 8 août 2003 à 15:41
Bonjour,

J'ai un petit pb avec une fonction de mon interface VB: en fait elle lance une fenetre de commande avec l'instruction:
mycommand = Shell("D:\putty.exe -ssh 10.1.124.219", vbNormalFocus)
Pour la suite je dois parcourir un fichier texte qui me donne les instructions a envoyer, mais avant de les envoyer il faut que j'active la fenetre que j'ai lance au debut. Pour cela je pensais faire ID=Shell(.....) puis un AppActivate(ID). Deja est-ce que c possible de faire un truc pareil et ensuite je ne sais pas quoi mettre ds la fonction Shell (je sais qu'il faut mettre un path mais le path de quoi?)?

Si qq'un peut m'eclairer il est le bienvenu, tout comme d'autres idees pour resoudre mon pb. Merci d'avance!

6 réponses

Mooiz Messages postés 128 Date d'inscription mercredi 25 juin 2003 Statut Membre Dernière intervention 8 juillet 2005
8 août 2003 à 11:03
la fonction appactivate ne prnd pas en paramètre un identificateur mais un nom de fenêtre. Pour passer de l'identificateur au nom de fenêtre c'est assez chaud je crois donc il vaut peut être mieux que tu regarde le nom de ta fenêtre lorsque tu execute ta fonction shell et que tu le stocke dans une variable (c'est valable uniquement si le nom ne change pas, sinon ben va falloir sortir les API...) et que tu appelle ensuite appactivate "nom de ta fenêtre"
Ensuite ta fonction shell m'a l'air correcte : le path c'est le chemin du prog que tu veux lancer, donc putty.exe qui se trouve apparement sur d:\ dans ton cas
0
crenaud76 Messages postés 4172 Date d'inscription mercredi 30 juillet 2003 Statut Membre Dernière intervention 9 juin 2006 28
8 août 2003 à 11:06
Tu n'as pas besoin de AppActivate, le Shell() va lancer l'executable "d:\putty.exe" comme si tu le lancait depuis le menu "Démarrer | executer ..." (en fonction du second arg de ton Shell( ...), ce sera fenêtre ouverte, reduite, avec ou seans le focus, etc ...)
Pour ce qui est du Path a mettre ou pas, si l'exe que tu veux lancer est dans un répertoire contenu dans la variable d'environnement Path, tu peux juste mettre le nom de l'exe, sinon il faudra effectivement mettre le pathh complet. Ex:
Shell("notepad.exe") fonctionne très bien car notepad.exe est dans le rép windows quie st dans le Path
Shell("MonProg.exe") ne fonctionnera pas si monprog.exe est dans "d:\monrep" (qui n'est pas dans ton path) Il faudrat alors mettre : Shell("d:\monrep\monprog.exe")

OK ?

Christophe R.
0
cs_cissou06 Messages postés 124 Date d'inscription mercredi 2 juillet 2003 Statut Membre Dernière intervention 16 mai 2007 1
8 août 2003 à 11:09
OK pour AppActivate (j'avais juste vu dans l'aide de VB qu'on pouvait passer en parametre le resultat de la fonction shell...)
Mais mon pb justement c'est qu'il faudrait que mon interface VB recupere le nom de la fenetre toute seule car il change suivant les instructions lues qui elles meme dependent de ce que veut faire l'utilisateur. Et la je suis bloquee!!!! Il n'existe pas une fonction pour recuperer le nom d'une fenetre? Ou si tu as une autre idee, je prends!!
0
cs_cissou06 Messages postés 124 Date d'inscription mercredi 2 juillet 2003 Statut Membre Dernière intervention 16 mai 2007 1
8 août 2003 à 11:35
Je vois pas trop comment ca va marcher. Je dois faire:

mycommand = Shell("D:\putty.exe -ssh 10.1.124.219", vbNormalFocus)
SendKeys instruction

et puis qd g trouve la prochaine commande que j'ai trouve ds le fichier texte je fais quoi? Je refais la meme chose?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
crenaud76 Messages postés 4172 Date d'inscription mercredi 30 juillet 2003 Statut Membre Dernière intervention 9 juin 2006 28
8 août 2003 à 14:07
Tu balance des SendKeys les un derrière les autres ... en faisant attention, si ton appli Putty.exe met un certain tempsa vant de rendre la main après une commande, il faut que tes sendkeys soit séparé par des delais d'attente suffisant.
Si ton appli putty.exe attend des appuis sur la touche <Return> pour valide rune commande saisie, n'oublie de transmettre des "{ENTER}" (ou "~" qui est équivalent)
Par exemple : SendKeys "Commande à lancer{ENTER}"
Et surtout bien lancer ton Shell() avec une option vb..Focus, comme ton "vbNormalFocus", pour que la fenêtre de putty.exe soit active (tu te passe donc du Pb du appactivate())
Christophe R.
0
cs_cissou06 Messages postés 124 Date d'inscription mercredi 2 juillet 2003 Statut Membre Dernière intervention 16 mai 2007 1
8 août 2003 à 15:41
Merci pour ta reponse!
0
Rejoignez-nous