OVH Cloud OVH Cloud

Interrompre un EXE (?) bis

4 réponses
Avatar
News
Merci pour ce lien, il est intéressant mais dans mon cas ca ne fonctionne
pas.
Pourquoi ?
Parceque :

L'exemple fournit dans le lien fonctionne car c'est une appli_1 qui
appelle une appli_2.
Cette appli_2 peut donc être en "pause" ou être "killer" dans l'appli_1

Mais dans mon cas, je lance une appli_1 alors que l'appli_2 est déjà
lancée !!! ce qui est différent !
et dans ce cas je ne peux pas interrompre le process. Le "kill" ne
fonctionne pas puisqu'il l'appli_2 n'a pas
été lancée par le bouton "start" de l'appli_1. Et c'est le but de ma
recherche, je veux stopper l'appli_2.

Avez vous compris ? car ce n'est pas évident à expliquer ! :-)
MERCI BEAUCOUP




<Bonjour/soir,
<
<pour un programme externe, regarde ce thread:

<http://groups.google.com/groups?threadm=OvaOtL72DHA.2360%40TK2MSFTNGP10.phx
.gbl
<
<pour ton propre programme, voir la faq:
<http://faq.vb.free.fr/index.php?question=106
<
<--
<François Picalausa (MVP VB)
<FAQ VB : http://faq.vb.free.fr
<MSDN : http://msdn.microsoft.com


"News" <laurent.jollyNO-SPAM@strada.fr> a écrit dans le message de
news:c1hn1t$l28$1@s1.read.news.oleane.net

> Bonjour, est-il possible d'interrompre un exécutable à partir d'une
> commande ou API dans une appli VB6 ?
> Merci
>
> Lolo

4 réponses

Avatar
François Picalausa
Bonjour/soir,

Ce qui est intéressant pour mettre en pause, c'est le handle vers le thread.
Tu peux récupérer un handle vers le process comme le montre l'exemple
http://support.microsoft.com/default.aspx?scid2986

Dans la section utilisant CreateToolhelp32Snapshot, tu pourra faire appel à
Thread32First et Thread32Next pour retrouver le thread.
Je suppose que c'est faisable aussi dans l'autre section... nécessitant
quelque recherche.

A noter: pour la même question, il est inutile de créer deux files de
discution.
Il suffisait de répondre à ma réponse ;-)

--
François Picalausa (MVP VB)
FAQ VB : http://faq.vb.free.fr
MSDN : http://msdn.microsoft.com

"News" a écrit dans le message de
news:c1ia8h$4b4$
Merci pour ce lien, il est intéressant mais dans mon cas ca ne
fonctionne pas.
Pourquoi ?
Parceque :

L'exemple fournit dans le lien fonctionne car c'est une appli_1 qui
appelle une appli_2.
Cette appli_2 peut donc être en "pause" ou être "killer" dans
l'appli_1

Mais dans mon cas, je lance une appli_1 alors que l'appli_2 est
déjà lancée !!! ce qui est différent !
et dans ce cas je ne peux pas interrompre le process. Le "kill" ne
fonctionne pas puisqu'il l'appli_2 n'a pas
été lancée par le bouton "start" de l'appli_1. Et c'est le but de
ma recherche, je veux stopper l'appli_2.



<Bonjour/soir,
<
<pour un programme externe, regarde ce thread:




<http://groups.google.com/groups?threadm=OvaOtL72DHA.2360%40TK2MSFTNGP10.phx
.gbl
<
<pour ton propre programme, voir la faq:
<http://faq.vb.free.fr/index.php?question6
<
"News" a écrit dans le message de
news:c1hn1t$l28$
Bonjour, est-il possible d'interrompre un exécutable à partir d'une
commande ou API dans une appli VB6 ?




Avatar
Zoury
Salut Laurent! :O)

Il te suffit de retrouver le ThreadID du thread principal (ou du thread que
tu veux suspendre) de l'application en question.

Pour y parvenir, tu dois boucler les fenêtres filles du desktop qui sont en
fait les fenêtre principales des applications ouvertes.
voir http://vbnet.mvps.org/index.html?code/system/shellhwnd.htm

Retrouver le handle de la fenêtre que tu cherches soit à l'aide de son texte
à l'aide de l'API GetWindowText().
voir
http://groups.google.com/groups?threadm=eThkybjmDHA.1408%40TK2MSFTNGP11.phx.gbl

Utilisr l'API GetWindowThreadProcessId() (voir l'exemple 1) en lui passant
le hWnd de la fenêtre et 0 comme ProcessID. Cela te renvoit le ThreadID que
tu cherches..

En finalement appelé l'API SuspendThread() avec le ThreadID retrouvé. voir
exemple référé par François.



Si tu as besoin d'aide supplémentaire, n'hésite pas. :O)

--
Cordialement
Yanick Lefebvre - MVP pour Visual Basic
http://faq.vb.free.fr/?rubrique=0 - http://www.mvps.org/vbnet/
http://www.mentalis.org/agnet/apiguide.shtml - http://www.mztools.com/

Merci de poster les réponses au groupe afin d'en faire profiter à tous
Avatar
News
Ce lien là donne un source qui permet d'afficher tous les processus dans
windows et c'est tres intéressant !
mais , à partir de mon application, comment puis-je en supprimer un que je
désignerai dans la liste de processus ?

Merci

--


"François Picalausa" a écrit dans le message de
news:egqVeq6%
> Bonjour/soir,
>
> Ce qui est intéressant pour mettre en pause, c'est le handle vers le
thread.
> Tu peux récupérer un handle vers le process comme le montre l'exemple
> http://support.microsoft.com/default.aspx?scid2986
>
> Dans la section utilisant CreateToolhelp32Snapshot, tu pourra faire
appel à
> Thread32First et Thread32Next pour retrouver le thread.
> Je suppose que c'est faisable aussi dans l'autre section... nécessitant
> quelque recherche.
>
> A noter: pour la même question, il est inutile de créer deux files de
> discution.
> Il suffisait de répondre à ma réponse ;-)
>
> --
> François Picalausa (MVP VB)
> FAQ VB : http://faq.vb.free.fr
> MSDN : http://msdn.microsoft.com
>
> "News" a écrit dans le message de
> news:c1ia8h$4b4$
> > Merci pour ce lien, il est intéressant mais dans mon cas ca ne
> > fonctionne pas.
> > Pourquoi ?
> > Parceque :
> >
> > L'exemple fournit dans le lien fonctionne car c'est une appli_1 qui
> > appelle une appli_2.
> > Cette appli_2 peut donc être en "pause" ou être "killer" dans
> > l'appli_1
> >
> > Mais dans mon cas, je lance une appli_1 alors que l'appli_2 est
> > déjà lancée !!! ce qui est différent !
> > et dans ce cas je ne peux pas interrompre le process. Le "kill" ne
> > fonctionne pas puisqu'il l'appli_2 n'a pas
> > été lancée par le bouton "start" de l'appli_1. Et c'est le but de
> > ma recherche, je veux stopper l'appli_2.
>
> > <Bonjour/soir,
> > <
> > <pour un programme externe, regarde ce thread:
> >
> >
>
<http://groups.google.com/groups?threadm=OvaOtL72DHA.2360%40TK2MSFTNGP10.phx
> > .gbl
> > <
> > <pour ton propre programme, voir la faq:
> > <http://faq.vb.free.fr/index.php?question6
> > <
> > "News" a écrit dans le message de
> > news:c1hn1t$l28$
> >> Bonjour, est-il possible d'interrompre un exécutable à partir d'une
> >> commande ou API dans une appli VB6 ?
>
>
Avatar
François Picalausa
Bonjour/soir,

s'il te faut jsute terminer ce processus et non le mettre en pause, voici
deux fiches:
How to kill an app gently
http://msdn.microsoft.com/library/en-us/dnvsm01/html/dt0109.asp

Et un exemple de la technique décrite ci-haut: TaskList
http://www.mvps.org/vb/samples.htm

--
François Picalausa (MVP VB)
FAQ VB : http://faq.vb.free.fr
MSDN : http://msdn.microsoft.com


"News" a écrit dans le message de
news:c1ihjn$8rq$
Ce lien là donne un source qui permet d'afficher tous les processus
dans windows et c'est tres intéressant !
mais , à partir de mon application, comment puis-je en supprimer un
que je désignerai dans la liste de processus ?

Merci

--


"François Picalausa" a écrit dans le message
de news:egqVeq6%
> Bonjour/soir,
>
> Ce qui est intéressant pour mettre en pause, c'est le handle vers
le thread.
> Tu peux récupérer un handle vers le process comme le montre
l'exemple > http://support.microsoft.com/default.aspx?scid2986
>
> Dans la section utilisant CreateToolhelp32Snapshot, tu pourra
faire appel à
> Thread32First et Thread32Next pour retrouver le thread.
> Je suppose que c'est faisable aussi dans l'autre section...
nécessitant > quelque recherche.
>
> A noter: pour la même question, il est inutile de créer deux
files de > discution.
> Il suffisait de répondre à ma réponse ;-)
>
> --
> François Picalausa (MVP VB)
> FAQ VB : http://faq.vb.free.fr
> MSDN : http://msdn.microsoft.com
>
> "News" a écrit dans le message de
> news:c1ia8h$4b4$
> > Merci pour ce lien, il est intéressant mais dans mon cas ca ne
> > fonctionne pas.
> > Pourquoi ?
> > Parceque :
> >
> > L'exemple fournit dans le lien fonctionne car c'est une
appli_1 qui > > appelle une appli_2.
> > Cette appli_2 peut donc être en "pause" ou être "killer" dans
> > l'appli_1
> >
> > Mais dans mon cas, je lance une appli_1 alors que l'appli_2
est > > déjà lancée !!! ce qui est différent !
> > et dans ce cas je ne peux pas interrompre le process. Le
"kill" ne > > fonctionne pas puisqu'il l'appli_2 n'a pas
> > été lancée par le bouton "start" de l'appli_1. Et c'est le
but de > > ma recherche, je veux stopper l'appli_2.
>
> > <Bonjour/soir,
> > <
> > <pour un programme externe, regarde ce thread:
> >
> >
>



<http://groups.google.com/groups?threadm=OvaOtL72DHA.2360%40TK2MSFTNGP10.phx
> > .gbl
> > <
> > <pour ton propre programme, voir la faq:
> > <http://faq.vb.free.fr/index.php?question6
> > <
> > "News" a écrit dans le
message de > > news:c1hn1t$l28$
> >> Bonjour, est-il possible d'interrompre un exécutable à
partir d'une > >> commande ou API dans une appli VB6 ?
>
>