Téléchargé 4 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
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
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.