Invité Invité
| Sujet: comment savoir si un programme est fermé par son nom? Ven 12 Oct 2012 - 2:05 | |
| Voila le problème: A partir d'un loader qui charge un programme par chain.J'ai établi le contact entre le programme qui appel le loader et celui-ci, et j'ai la DLL de KLAUS qui est IsProgramRunning qui me permet de savoir qu'en le loader a démarrer. Ce loader par la fonction CHAIN lit un fichier bas, dont je connais le nom, mais si il est lancé, je ne sais pas qu'en il est fermé. J'ai recherché pour connaitre le contenu du gestionnaire de tâche, mais je ne sais pas le lire par programme. Cela permettrait par une attente avec le timer, l'attente de la fermeture, et retourner au programme de départ (affichage - paramètres.) Je viens d'essayer de reprendre la même fonction, pour lire le hnd du loader pour savoir si il est fermé, mais à partir de là, j'ai le résultat "0", alors que le programme fonctionne. je mets la partie du code concerné juste pour voir si quelque chose est incorrect. - Code:
-
' mettre le message dans mess$ ' puis: GOSUB ENVOI envoi: execute loader$ dest$ = "EXÉCUTION DU PROGRAMME" :' caption du programme visé. temp%=0 repeat hnd% = DLL_call1("IsProgramRunning",adr(dest$)):wait 100 temp%=temp%+1:if temp%=100 then message "programme pas ouvert":exit_repeat until hnd% <> 0 or scancode =27 ' le programme est ouvert' if hnd% >0 i% = 0 - 1234 hnd% = dll_call3("IPCGetHandle",adr(dest$),len(dest$),i%) wait 100 res% = DLL_call3("IPCSendMessage",adr(mess$),len(mess$),hnd%) top 0,200 :left 0,700 :' décalage pour lire le caption, et savoir qu'en le timer voit la fermeture end_if TO_BACKGROUND 0 timer_on 99 :' branchement à end_exe' return
end_exe: caption 0,dest$+" "+str$(hnd%) hnd% = DLL_call1("IsProgramRunning",adr(dest$)) : text 15,text$(15)+" "+str$(hnd%) :' un edit de controle if hnd%=0 then show 0:to_foreground 0:timer_off 99 :top 0,0 : caption 0,dest$+" "+str$(hnd%) :left 0,0 return |
|
Jack Admin
Nombre de messages : 2395 Date d'inscription : 28/05/2007
| Sujet: Re: comment savoir si un programme est fermé par son nom? Ven 12 Oct 2012 - 7:39 | |
| As-tu essayé HANDLE_FORM ?
Si handle_form(dest$) te retourne 0, c'est que le programme lancé par CHAIN est terminé. | |
|
Invité Invité
| Sujet: Re: comment savoir si un programme est fermé par son nom? Ven 12 Oct 2012 - 8:59 | |
| Merci Jack d'être intervenu. Mais ça ne marche pas. J'ai mis le timer à 2000. J'obtiens toujour 0 comme résultat. dans le gestionnaire de tache, on voit le programme. dans le code, j'ai mis la fin du programme qui enclenche le timer. - Code:
-
timer_on 99 :' branchement à end_exe' execute "taskmgr.exe":' ouvrir le gestionnaire de tâche' return
end_exe: ' timer:régler à 2000, pour voir le 1er appel, et j'arrète aussitôt le programme avant les 10s soit 2000*5 caption 0,dest$+" "+ str$(handle_form(dest$)) text 15,text$(15)+" "+ str$(handle_form(dest$)) temp%=temp%+1 :if temp%=5 then show 0:to_foreground 0:timer_off 99 :top 0,0 :left 0,0 return Dans le form 0 en bas à droite, on voit le caption du programme loader_pagiciel.exe suivi du handle trouvé. loader_pagiciel.exe est présent dans le gestionnaire de tâche. |
|
Invité Invité
| Sujet: Re: comment savoir si un programme est fermé par son nom? Sam 13 Oct 2012 - 0:52 | |
| Bon je vois que j'en fait mon deuil! Je vais voir si je peux contourner ce problème d'une autre manière. |
|
Contenu sponsorisé
| Sujet: Re: comment savoir si un programme est fermé par son nom? | |
| |
|