cs_MicFor
Messages postés21Date d'inscriptionjeudi 22 mai 2003StatutMembreDernière intervention 8 octobre 2007
-
28 nov. 2006 à 11:34
Cirec
Messages postés3833Date d'inscriptionvendredi 23 juillet 2004StatutModérateurDernière intervention18 septembre 2022
-
30 nov. 2006 à 13:21
Bonjour,
Dans mon application, je dois exécuter un utilitaire externe qui me retransmet l'info traitée, sous la forme d'une chaine de caractère par l'intermédiaire du clipboard. J'utilise donc un shellExecute(handle, 'open', prg, nil, nil, Sw_show) suivi d'un memo.pastefromclipboard et cela fonctionne sans probléme, manuellement avec un simple bouton.
Petit problème, aprés le shellexecute, mon application récupère les données stockée dans le clipboard aprés la fermeture de l'utilitaire mais je n'ai pas trouvé le moyen de savoir à quel moment l'utilitaire à terminer son travail et quand windows rends la main à mon programme. Je peux éventuellement faire un test sur le contenu du presse papier mais cela devient assez lourd.
Comment repérer, sous delphi, le moment précis où windows rends la main à mon application après un shelExecute? J'ai trouvé peu d'info sur le ShellExecute, a quoi sert par exemple le paramètre 'handle' ?
Avec mes remerciements.
Micfor
Cirec
Messages postés3833Date d'inscriptionvendredi 23 juillet 2004StatutModérateurDernière intervention18 septembre 202250 28 nov. 2006 à 18:57
Que ce soit une commande Dos où une APPLICATION c'est la même chose ... ça fonctionne
as-tu au moins essayé le code que je t'ai donné
il ne faut pas simplement espérer ajouté la paramètre /k
il faut regarder la source (le code) et bien regarder comment et avec quels arguments ShellExecute est appelé
Cirec
Messages postés3833Date d'inscriptionvendredi 23 juillet 2004StatutModérateurDernière intervention18 septembre 202250 28 nov. 2006 à 12:02
ben ouais,
le lien que je donne permet aussi l'attente de la fin de l'application et juste avec 1 paramètreen plus (/k) dans ligne de commande
Il permet entre autre chose aussi, de lancer plusieurs commandes en une fois dos où non
ça peut être le lancement d'une application suivi d'une commande dos où d'une autre application etc etc ...
cs_MicFor
Messages postés21Date d'inscriptionjeudi 22 mai 2003StatutMembreDernière intervention 8 octobre 2007 28 nov. 2006 à 17:04
Oui merci mais l'utilitaire en question n'est pas une commande dos et le /k ne fonctionne pas. N'y aurait-il pas une astuce avec le focus windows car lorsque je lance le ShellExecute, mon application perds le focus lorsque l'utilitaire affiche une barre de progression et en fin de traitement, la fenetre de l'utilitaire s'efface et le focus reviens sur ma fiche. Ce que je voudrais détecter, c'est le retour du focus sur ma fiche indiquant ainsi la fin du traitement. Sous delphi, je ne sais pas si "focus" est bien le terme qui convient, on peut essayer "activation ou desactivation" d'une Fiche. SI vous avez d'autres pistes?
Avec mes remerciements.
Je cherche aussi de mon coté et je vous tiendrais au courant. @+
cs_MicFor
Messages postés21Date d'inscriptionjeudi 22 mai 2003StatutMembreDernière intervention 8 octobre 2007 30 nov. 2006 à 12:24
Remerciements à Loda et @Cirec j'ai choisi la formule du ShellExecute avec CMD aprés avoir bataillé avec les problèmes de format des lignes de commande des répertoires et des nom de fichier entre Windows et Dos.
J'ai tout ré-installé avec des noms courts et tout baigne actuellement.
Encore merci à vous deux.
@+ Micfor