IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Téléchargé 5 fois
Vote des utilisateurs
0 
0 
Détails
Licence : Non renseignée
Mise en ligne le 14 novembre 2010
Langue : Français
Référencé dans
Navigation

Composant pour gérer le ShellExecute

Il y a quelque temps, j'ai dû réaliser un programme tournant en tâche de fond . Il devait lancer, au fur et à mesure que des documents se présentaient, lancer un programme avec une chaîne de commande correspondant aux documents.(ShellExecute). Aux tests, tout était parfait. En mise en production, les documents arrivaient tellement vite que j'avais des centaines de programmes lancés quasi simultanément et la machine s'effondrait littéralement sous la charge. J'ai donc développé ce composant qui prend en charge le lancement et l'arrêt du programme lancé, ce qui permet par exemple de ne lancer un autre programme que quand un autre est fini.

En y étant, j'ai peaufiné le composant qui est maintenant capable de lancer l'exécution d'un programme avec ou sans chaîne de commande, de lancer un fichier (s'il est de type connu de windows).Le tout en choisissant le mode fenêtre (Normal,Minimisé,Maximisé,Masqué) et le mode synchrone ou asynchrone.

Cerise sur le gâteau, il est possible de donner une indication personnalisée qui sera liée au programme lancé, qui sera bien utile s'il y a plusieurs occurrences du même programme.

Lancer un programme se fait par la commande

LandF1.ShellProg NomExe, Commande, Synchrone, WindowStyle , Tag

Un événement est levé quand le programme démarre


Private Sub LandF1_Started(ProgName As String, Cmd As String, Tag As Variant, ProcessId As Long)
MsgBox "Le programme " & ProgName & " vient de démarrer" & vbCrLf & _
"Chaine de commande : " & Cmd & vbCrLf & _
"Tag personalisé : " & Tag

End Sub

Et quand il se termine

Private Sub LandF1_Finished(ProgName As String, Cmd As String, Tag As Variant, ProcessId As Long)
MsgBox "Le programme " & ProgName & " vient de se terminer" & vbCrLf & _
"Chaine de commande : " & Cmd & vbCrLf & _
"Tag personalisé : " & Tag

End Sub

Reste une dernière possibilité du composant, tuer le programme
LandF1.TerminateProg ProcessId

ProcessId ayant été fourni par l'événement Started

Developpez.com décline toute responsabilité quant à l'utilisation des différents éléments téléchargés.