OVH Cloud OVH Cloud

Arrêter un programme

8 réponses
Avatar
Claude Azoulai
Bonjour et merci de votre aide.

J'ai r=E9alis=E9 une application de r=E9pertoire t=E9l=E9phonique=20
dans lequel je peux appeler directement un correspondant.

Il se trouve que souvent un programme est en train=20
d'utiliser le modem.

Mon but est, en ayant entr=E9 dans les r=E9glages, le chemin=20
et le nom du programme incrimin=E9, de l'arr=EAter=20
automatiquement =E0 l'ouverture de mon application (mon=20
probl=E8me), et de le relancer =E0 la fermeture de cette=20
application (une commande shell devrait suffire).

Si quelcun pouvais m'aider ce serait formidable.

Merci encore.

Claude Azoulai

8 réponses

Avatar
le_troll
Eh, tu veux poser ta question en boucle ???

Je t'ai déjà répondu à ça, lol, faudrait commencer par savoir comment
qu'elle s'appelle ton application qui téléphone toute seule, et surtout d'où
elle démarre (Base de registres, fichier INI, menu "démarrage"?)...

D'une part, je t'ai parlé de "BDR", tu ne savais pas ce que c'était,
j'en déduis que tu maîtrises mal les accès à la BDR (ce qui peut ariver à
tout le monde), mais alors, ça risque d'être dangereux pour ton ordinateur
si tu vas la manipuler, tu aurais tout intérêt à laisser ça comme c'est...

Toutefois, comme le client est roi (tant qu'il paye), tu m'as écrit, je
t'ai ré-pondu... sans nouvelle...
Alors, pas la peine de demander toujours la même chose, réponds déjà aux
questions qui font suite à ta demande si tu veux avoir une solution un
jour...

Bonjour chez toi :o)



--
Merci, @+, bye, Joe
troll75 AROBASE iFrance POINT com
------------------------------------------
Ce message est plein de virus "certifiés"
Le_Troll, éleveur de Trolls depuis César, qui disait:
Avec une hache, celui qui tient le manche a toujours raison !
------------------------------------------


"Claude Azoulai" a écrit dans le message de news:
250e01c47deb$87ff0440$
Bonjour et merci de votre aide.

J'ai réalisé une application de répertoire téléphonique
dans lequel je peux appeler directement un correspondant.

Il se trouve que souvent un programme est en train
d'utiliser le modem.

Mon but est, en ayant entré dans les réglages, le chemin
et le nom du programme incriminé, de l'arrêter
automatiquement à l'ouverture de mon application (mon
problème), et de le relancer à la fermeture de cette
application (une commande shell devrait suffire).

Si quelcun pouvais m'aider ce serait formidable.

Merci encore.

Claude Azoulai
Avatar
claude Azoulai
excuse moi
Le programme incriminé est le Fax Microsoft(carpserv.exe
dans system32), mais ma demande est plus générale car je
désire donner mon application à des amis et je ne connais
pas d'avance quel programme il faudrat arrêter.
Si il n'y a pas de possibiliter d'arrêter un programme
qui tourne soit par une API ou une commande directe alors
tanpis et merci quand même.
Claude Azoulai

-----Message d'origine-----
Eh, tu veux poser ta question en boucle ???

Je t'ai déjà répondu à ça, lol, faudrait commencer


par savoir comment
qu'elle s'appelle ton application qui téléphone toute


seule, et surtout d'où
elle démarre (Base de registres, fichier INI,


menu "démarrage"?)...

D'une part, je t'ai parlé de "BDR", tu ne savais pas


ce que c'était,
j'en déduis que tu maîtrises mal les accès à la BDR (ce


qui peut ariver à
tout le monde), mais alors, ça risque d'être dangereux


pour ton ordinateur
si tu vas la manipuler, tu aurais tout intérêt à laisser


ça comme c'est...

Toutefois, comme le client est roi (tant qu'il


paye), tu m'as écrit, je
t'ai ré-pondu... sans nouvelle...
Alors, pas la peine de demander toujours la même chose,


réponds déjà aux
questions qui font suite à ta demande si tu veux avoir


une solution un
jour...

Bonjour chez toi :o)



--
Merci, @+, bye, Joe
troll75 AROBASE iFrance POINT com
------------------------------------------
Ce message est plein de virus "certifiés"
Le_Troll, éleveur de Trolls depuis César, qui disait:
Avec une hache, celui qui tient le manche a toujours


raison !
------------------------------------------


"Claude Azoulai" a écrit dans


le message de news:
250e01c47deb$87ff0440$
Bonjour et merci de votre aide.

J'ai réalisé une application de répertoire téléphonique
dans lequel je peux appeler directement un correspondant.

Il se trouve que souvent un programme est en train
d'utiliser le modem.

Mon but est, en ayant entré dans les réglages, le chemin
et le nom du programme incriminé, de l'arrêter
automatiquement à l'ouverture de mon application (mon
problème), et de le relancer à la fermeture de cette
application (une commande shell devrait suffire).

Si quelcun pouvais m'aider ce serait formidable.

Merci encore.

Claude Azoulai



.



Avatar
ng
Salut,

Regarde du coté de TerminateProcess() (mèthode violente).

--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/
http://apisvb.europe.webmatrixhosting.net/



claude Azoulai a écrit :

excuse moi
Le programme incriminé est le Fax Microsoft(carpserv.exe
dans system32), mais ma demande est plus générale car je
désire donner mon application à des amis et je ne connais
pas d'avance quel programme il faudrat arrêter.
Si il n'y a pas de possibiliter d'arrêter un programme
qui tourne soit par une API ou une commande directe alors
tanpis et merci quand même.
Claude Azoulai

-----Message d'origine-----
Eh, tu veux poser ta question en boucle ???

Je t'ai déjà répondu à ça, lol, faudrait commencer par savoir
comment qu'elle s'appelle ton application qui téléphone toute seule,
et surtout d'où elle démarre (Base de registres, fichier INI,


menu "démarrage"?)...

D'une part, je t'ai parlé de "BDR", tu ne savais pas ce que
c'était, j'en déduis que tu maîtrises mal les accès à la BDR (ce qui
peut ariver à tout le monde), mais alors, ça risque d'être dangereux
pour ton ordinateur si tu vas la manipuler, tu aurais tout intérêt à
laisser ça comme c'est...

Toutefois, comme le client est roi (tant qu'il paye), tu m'as
écrit, je t'ai ré-pondu... sans nouvelle...
Alors, pas la peine de demander toujours la même chose, réponds déjà
aux questions qui font suite à ta demande si tu veux avoir une
solution un jour...

Bonjour chez toi :o)



--
Merci, @+, bye, Joe
troll75 AROBASE iFrance POINT com
------------------------------------------
Ce message est plein de virus "certifiés"
Le_Troll, éleveur de Trolls depuis César, qui disait:
Avec une hache, celui qui tient le manche a toujours raison !
------------------------------------------


"Claude Azoulai" a écrit dans le message de
news: 250e01c47deb$87ff0440$
Bonjour et merci de votre aide.

J'ai réalisé une application de répertoire téléphonique
dans lequel je peux appeler directement un correspondant.

Il se trouve que souvent un programme est en train
d'utiliser le modem.

Mon but est, en ayant entré dans les réglages, le chemin
et le nom du programme incriminé, de l'arrêter
automatiquement à l'ouverture de mon application (mon
problème), et de le relancer à la fermeture de cette
application (une commande shell devrait suffire).

Si quelcun pouvais m'aider ce serait formidable.

Merci encore.

Claude Azoulai



.




Avatar
le_troll
Bonjour,

Si on peut arrêter... mais tu ne peux pas faire un programme qui, dés
qu'il est lancé va arrêter toutes les autres applications connectées, les
utilisateurs ne voient peut être pas ça de cette façon, généralement un tel
programme, s'il ne peut accéder au modem, dit "qu'il ne peut y accéder, de
fermer toutes les applications qui y accèdent...", mais de là à fermer
d'autorité tout ce qui est connecté au modem, lol, ça ne se fait guère...

D'autre part, sur un modem téléphonique c'est rarement une connexion
permanente... De plus, les anti-virus et flammes risquent de se mettre en
marche contre intrus non déclaré qui tente d'accéder au modem (ton
programme), alors il y a là aussi un risque de générer un refus d'accès (à
étudier)...

Oui, si tu as le nom de ce que tu as fermé, tu peux relancer avec:

Shell "nom_programme.exe"

A l'origine ta question si je me souviens bien, portait sur le fait de
fermer les applications qui s'ouvraient toutes seules au lancement sur ton
PC, maintenant tu changes, voulant fermer sur n'importe quel ordinateur,
tout ce qui accède au modem téléphonique, ce n'est plus le même registre
totalement...

Voici de quoi fermer tout ce qui traîne, mais a priori je ne sais pas
tester qui accède au modem pour fermer l'applie, voir ce que d'autres en
diront...

Private Declare Function ExitWindowsEx Lib "user32" (ByVal uFlags As Long,
ByVal dwReserved As Long) As Long
'

Dim retour As Long

'

Tout fermer sans quitter Windows

retour = ExitWindowsEx(0, 0)

Unload Me End



Fermer les applications qui ne répondent plus sans quitter

Retour = ExitWindowsEx(4, 0)

Unload Me


--
Merci, @+, bye, Joe
troll75 AROBASE iFrance POINT com
------------------------------------------
Ce message est plein de virus "certifiés"
Le_Troll, éleveur de Trolls depuis César, qui disait:
Avec une hache, celui qui tient le manche a toujours raison !
------------------------------------------


"claude Azoulai" a écrit dans le message de news:
28a301c47df5$180ef730$
excuse moi
Le programme incriminé est le Fax Microsoft(carpserv.exe
dans system32), mais ma demande est plus générale car je
désire donner mon application à des amis et je ne connais
pas d'avance quel programme il faudrat arrêter.
Si il n'y a pas de possibiliter d'arrêter un programme
qui tourne soit par une API ou une commande directe alors
tanpis et merci quand même.
Claude Azoulai

-----Message d'origine-----
Eh, tu veux poser ta question en boucle ???

Je t'ai déjà répondu à ça, lol, faudrait commencer


par savoir comment
qu'elle s'appelle ton application qui téléphone toute


seule, et surtout d'où
elle démarre (Base de registres, fichier INI,


menu "démarrage"?)...

D'une part, je t'ai parlé de "BDR", tu ne savais pas


ce que c'était,
j'en déduis que tu maîtrises mal les accès à la BDR (ce


qui peut ariver à
tout le monde), mais alors, ça risque d'être dangereux


pour ton ordinateur
si tu vas la manipuler, tu aurais tout intérêt à laisser


ça comme c'est...

Toutefois, comme le client est roi (tant qu'il


paye), tu m'as écrit, je
t'ai ré-pondu... sans nouvelle...
Alors, pas la peine de demander toujours la même chose,


réponds déjà aux
questions qui font suite à ta demande si tu veux avoir


une solution un
jour...

Bonjour chez toi :o)



--
Merci, @+, bye, Joe
troll75 AROBASE iFrance POINT com
------------------------------------------
Ce message est plein de virus "certifiés"
Le_Troll, éleveur de Trolls depuis César, qui disait:
Avec une hache, celui qui tient le manche a toujours


raison !
------------------------------------------


"Claude Azoulai" a écrit dans


le message de news:
250e01c47deb$87ff0440$
Bonjour et merci de votre aide.

J'ai réalisé une application de répertoire téléphonique
dans lequel je peux appeler directement un correspondant.

Il se trouve que souvent un programme est en train
d'utiliser le modem.

Mon but est, en ayant entré dans les réglages, le chemin
et le nom du programme incriminé, de l'arrêter
automatiquement à l'ouverture de mon application (mon
problème), et de le relancer à la fermeture de cette
application (une commande shell devrait suffire).

Si quelcun pouvais m'aider ce serait formidable.

Merci encore.

Claude Azoulai



.



Avatar
Claude Azoulai
Bonjour
Je te remercie bien de ta collaboration.
Mais mon but était d'arrêter un seul programme et je me
suis probablement mal expliqué.
J'ai vu qu'il y avait une API qui permet de terminer un
programme dont on connait le handle.
Problème : je n'ai pas trouvé le moyen de récupérer ce
handle.
Dans tous les cas, je te remercie bien de l'aide que tu
m'a fourni.
A bientôt peut-être
Claude
-----Message d'origine-----
Bonjour,

Si on peut arrêter... mais tu ne peux pas faire un


programme qui, dés
qu'il est lancé va arrêter toutes les autres


applications connectées, les
utilisateurs ne voient peut être pas ça de cette façon,


généralement un tel
programme, s'il ne peut accéder au modem, dit "qu'il ne


peut y accéder, de
fermer toutes les applications qui y accèdent...", mais


de là à fermer
d'autorité tout ce qui est connecté au modem, lol, ça ne


se fait guère...

D'autre part, sur un modem téléphonique c'est


rarement une connexion
permanente... De plus, les anti-virus et flammes


risquent de se mettre en
marche contre intrus non déclaré qui tente d'accéder au


modem (ton
programme), alors il y a là aussi un risque de générer


un refus d'accès (à
étudier)...

Oui, si tu as le nom de ce que tu as fermé, tu peux


relancer avec:

Shell "nom_programme.exe"

A l'origine ta question si je me souviens bien,


portait sur le fait de
fermer les applications qui s'ouvraient toutes seules au


lancement sur ton
PC, maintenant tu changes, voulant fermer sur n'importe


quel ordinateur,
tout ce qui accède au modem téléphonique, ce n'est plus


le même registre
totalement...

Voici de quoi fermer tout ce qui traîne, mais a


priori je ne sais pas
tester qui accède au modem pour fermer l'applie, voir ce


que d'autres en
diront...

Private Declare Function ExitWindowsEx Lib "user32"


(ByVal uFlags As Long,
ByVal dwReserved As Long) As Long
'

Dim retour As Long

'

Tout fermer sans quitter Windows

retour = ExitWindowsEx(0, 0)

Unload Me End



Fermer les applications qui ne répondent plus sans


quitter

Retour = ExitWindowsEx(4, 0)

Unload Me


--
Merci, @+, bye, Joe
troll75 AROBASE iFrance POINT com
------------------------------------------
Ce message est plein de virus "certifiés"
Le_Troll, éleveur de Trolls depuis César, qui disait:
Avec une hache, celui qui tient le manche a toujours


raison !
------------------------------------------


"claude Azoulai" a écrit dans


le message de news:
28a301c47df5$180ef730$
excuse moi
Le programme incriminé est le Fax Microsoft(carpserv.exe
dans system32), mais ma demande est plus générale car je
désire donner mon application à des amis et je ne connais
pas d'avance quel programme il faudrat arrêter.
Si il n'y a pas de possibiliter d'arrêter un programme
qui tourne soit par une API ou une commande directe alors
tanpis et merci quand même.
Claude Azoulai

-----Message d'origine-----
Eh, tu veux poser ta question en boucle ???

Je t'ai déjà répondu à ça, lol, faudrait commencer


par savoir comment
qu'elle s'appelle ton application qui téléphone toute


seule, et surtout d'où
elle démarre (Base de registres, fichier INI,


menu "démarrage"?)...

D'une part, je t'ai parlé de "BDR", tu ne savais pas


ce que c'était,
j'en déduis que tu maîtrises mal les accès à la BDR (ce


qui peut ariver à
tout le monde), mais alors, ça risque d'être dangereux


pour ton ordinateur
si tu vas la manipuler, tu aurais tout intérêt à laisser


ça comme c'est...

Toutefois, comme le client est roi (tant qu'il


paye), tu m'as écrit, je
t'ai ré-pondu... sans nouvelle...
Alors, pas la peine de demander toujours la même chose,


réponds déjà aux
questions qui font suite à ta demande si tu veux avoir


une solution un
jour...

Bonjour chez toi :o)



--
Merci, @+, bye, Joe
troll75 AROBASE iFrance POINT com
------------------------------------------
Ce message est plein de virus "certifiés"
Le_Troll, éleveur de Trolls depuis César, qui disait:
Avec une hache, celui qui tient le manche a toujours


raison !
------------------------------------------


"Claude Azoulai" a écrit dans


le message de news:
250e01c47deb$87ff0440$
Bonjour et merci de votre aide.

J'ai réalisé une application de répertoire téléphonique
dans lequel je peux appeler directement un




correspondant.

Il se trouve que souvent un programme est en train
d'utiliser le modem.

Mon but est, en ayant entré dans les réglages, le chemin
et le nom du programme incriminé, de l'arrêter
automatiquement à l'ouverture de mon application (mon
problème), et de le relancer à la fermeture de cette
application (une commande shell devrait suffire).

Si quelcun pouvais m'aider ce serait formidable.

Merci encore.

Claude Azoulai



.





.



Avatar
Patrice Henrio
N'y a-t-il pas un moyen de déclarer qu'un programme devient "exclusif" pour
Windows, c'est à dire, sans fermer les autres programmes, leur messages sont
ignorés tant que l'application en question est active. Lorsque celle-ci
devient inactive, on rend la main aux autres.
C'est une piste peut-être intéressante pour l'application souhaitée.


"Claude Azoulai" a écrit dans le message de
news:291d01c47e27$bdc89500$
Bonjour
Je te remercie bien de ta collaboration.
Mais mon but était d'arrêter un seul programme et je me
suis probablement mal expliqué.
J'ai vu qu'il y avait une API qui permet de terminer un
programme dont on connait le handle.
Problème : je n'ai pas trouvé le moyen de récupérer ce
handle.
Dans tous les cas, je te remercie bien de l'aide que tu
m'a fourni.
A bientôt peut-être
Claude
-----Message d'origine-----
Bonjour,

Si on peut arrêter... mais tu ne peux pas faire un


programme qui, dés
qu'il est lancé va arrêter toutes les autres


applications connectées, les
utilisateurs ne voient peut être pas ça de cette façon,


généralement un tel
programme, s'il ne peut accéder au modem, dit "qu'il ne


peut y accéder, de
fermer toutes les applications qui y accèdent...", mais


de là à fermer
d'autorité tout ce qui est connecté au modem, lol, ça ne


se fait guère...

D'autre part, sur un modem téléphonique c'est


rarement une connexion
permanente... De plus, les anti-virus et flammes


risquent de se mettre en
marche contre intrus non déclaré qui tente d'accéder au


modem (ton
programme), alors il y a là aussi un risque de générer


un refus d'accès (à
étudier)...

Oui, si tu as le nom de ce que tu as fermé, tu peux


relancer avec:

Shell "nom_programme.exe"

A l'origine ta question si je me souviens bien,


portait sur le fait de
fermer les applications qui s'ouvraient toutes seules au


lancement sur ton
PC, maintenant tu changes, voulant fermer sur n'importe


quel ordinateur,
tout ce qui accède au modem téléphonique, ce n'est plus


le même registre
totalement...

Voici de quoi fermer tout ce qui traîne, mais a


priori je ne sais pas
tester qui accède au modem pour fermer l'applie, voir ce


que d'autres en
diront...

Private Declare Function ExitWindowsEx Lib "user32"


(ByVal uFlags As Long,
ByVal dwReserved As Long) As Long
'

Dim retour As Long

'

Tout fermer sans quitter Windows

retour = ExitWindowsEx(0, 0)

Unload Me End



Fermer les applications qui ne répondent plus sans


quitter

Retour = ExitWindowsEx(4, 0)

Unload Me


--
Merci, @+, bye, Joe
troll75 AROBASE iFrance POINT com
------------------------------------------
Ce message est plein de virus "certifiés"
Le_Troll, éleveur de Trolls depuis César, qui disait:
Avec une hache, celui qui tient le manche a toujours


raison !
------------------------------------------


"claude Azoulai" a écrit dans


le message de news:
28a301c47df5$180ef730$
excuse moi
Le programme incriminé est le Fax Microsoft(carpserv.exe
dans system32), mais ma demande est plus générale car je
désire donner mon application à des amis et je ne connais
pas d'avance quel programme il faudrat arrêter.
Si il n'y a pas de possibiliter d'arrêter un programme
qui tourne soit par une API ou une commande directe alors
tanpis et merci quand même.
Claude Azoulai

-----Message d'origine-----
Eh, tu veux poser ta question en boucle ???

Je t'ai déjà répondu à ça, lol, faudrait commencer


par savoir comment
qu'elle s'appelle ton application qui téléphone toute


seule, et surtout d'où
elle démarre (Base de registres, fichier INI,


menu "démarrage"?)...

D'une part, je t'ai parlé de "BDR", tu ne savais pas


ce que c'était,
j'en déduis que tu maîtrises mal les accès à la BDR (ce


qui peut ariver à
tout le monde), mais alors, ça risque d'être dangereux


pour ton ordinateur
si tu vas la manipuler, tu aurais tout intérêt à laisser


ça comme c'est...

Toutefois, comme le client est roi (tant qu'il


paye), tu m'as écrit, je
t'ai ré-pondu... sans nouvelle...
Alors, pas la peine de demander toujours la même chose,


réponds déjà aux
questions qui font suite à ta demande si tu veux avoir


une solution un
jour...

Bonjour chez toi :o)



--
Merci, @+, bye, Joe
troll75 AROBASE iFrance POINT com
------------------------------------------
Ce message est plein de virus "certifiés"
Le_Troll, éleveur de Trolls depuis César, qui disait:
Avec une hache, celui qui tient le manche a toujours


raison !
------------------------------------------


"Claude Azoulai" a écrit dans


le message de news:
250e01c47deb$87ff0440$
Bonjour et merci de votre aide.

J'ai réalisé une application de répertoire téléphonique
dans lequel je peux appeler directement un




correspondant.

Il se trouve que souvent un programme est en train
d'utiliser le modem.

Mon but est, en ayant entré dans les réglages, le chemin
et le nom du programme incriminé, de l'arrêter
automatiquement à l'ouverture de mon application (mon
problème), et de le relancer à la fermeture de cette
application (une commande shell devrait suffire).

Si quelcun pouvais m'aider ce serait formidable.

Merci encore.

Claude Azoulai



.





.



Avatar
le_troll
Tiens, voici un truc que j'ai trouvé et testé, qui ferme une applie, comme
tu connais le nom de la tienne, en comparant tu pourras l'identifier dans la
liste

Il faut une form1 avec
list1
commandbutton1
Le code qui suit:
---
Private Sub Form_Load()
ListerProcess List1
End Sub

Private Sub Command1_Click()
If List1.Text = "" Then Exit Sub
If MsgBox("Vous allez terminer le processus de " & List1.Text & vbCrLf _
& "Confirmation ??", vbYesNo, "Attention") = vbNo Then Exit Sub
TerminerProcessus List1.Text
List1.Clear
ListerProcess List1
End Sub

-------------------
Il faut dans module1
le code qui suit:
------------------
Option Explicit
Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess
As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long)
As Long
Private Declare Function TerminateProcess Lib "kernel32" (ByVal hProcess As
Long, ByVal uExitCode As Long) As Long
Private Declare Function GetWindowThreadProcessId Lib "user32" (ByVal hwnd
As Long, lpdwProcessId As Long) As Long
Private Declare Function AdjustTokenPrivileges Lib "advapi32.dll" (ByVal
TokenHandle As Long, ByVal DisableAllPrivileges As Long, NewState As
TOKEN_PRIVILEGES, ByVal BufferLength As Long, PreviousState As
TOKEN_PRIVILEGES, ReturnLength As Long) As Long
Private Declare Function OpenProcessToken Lib "advapi32.dll" (ByVal
ProcessHandle As Long, ByVal DesiredAccess As Long, TokenHandle As Long) As
Long
Private Declare Function LookupPrivilegeValue Lib "advapi32.dll" Alias
"LookupPrivilegeValueA" (ByVal lpSystemName As String, ByVal lpName As
String, lpLuid As LUID) As Long
Private Declare Function GetCurrentProcess Lib "kernel32" () As Long
Declare Function ProcessFirst Lib "kernel32" Alias "Process32First" (ByVal
hSnapshot As Long, uProcess As PROCESSENTRY32) As Long
Declare Function ProcessNext Lib "kernel32" Alias "Process32Next" (ByVal
hSnapshot As Long, uProcess As PROCESSENTRY32) As Long
Declare Function CreateToolhelpSnapshot Lib "kernel32" Alias
"CreateToolhelp32Snapshot" (ByVal lFlags As Long, lProcessID As Long) As
Long

Private Type LUID
LowPart As Long
HighPart As Long
End Type

Private Type LUID_AND_ATTRIBUTES
pLuid As LUID
Attributes As Long
End Type

Private Type TOKEN_PRIVILEGES
PrivilegeCount As Long
TheLuid As LUID
Attributes As Long
End Type


Public Const MAX_PATH As Integer = 260
Public Const TH32CS_SNAPPROCESS As Long = 2&

Type PROCESSENTRY32
dwSize As Long
cntUsage As Long
th32ProcessID As Long
th32DefaultHeapID As Long
th32ModuleID As Long
cntThreads As Long
th32ParentProcessID As Long
pcPriClassBase As Long
dwFlags As Long
szexeFile As String * MAX_PATH
End Type


Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal
lpClassName As String, ByVal lpWindowName As String) As Long

Function ProcessTerminate(Optional lProcessID As Long, Optional lHwndWindow
As Long) As Boolean
Dim lhwndProcess As Long
Dim lExitCode As Long
Dim lRetVal As Long
Dim lhThisProc As Long
Dim lhTokenHandle As Long
Dim tLuid As LUID
Dim tTokenPriv As TOKEN_PRIVILEGES, tTokenPrivNew As TOKEN_PRIVILEGES
Dim lBufferNeeded As Long

Const PROCESS_ALL_ACCESS = &H1F0FFF, PROCESS_TERMINAT = &H1
Const ANYSIZE_ARRAY = 1, TOKEN_ADJUST_PRIVILEGES = &H20
Const TOKEN_QUERY = &H8, SE_DEBUG_NAME As String = "SeDebugPrivilege"
Const SE_PRIVILEGE_ENABLED = &H2

On Error Resume Next
If lHwndWindow Then
'Get the process ID from the window handle
lRetVal = GetWindowThreadProcessId(lHwndWindow, lProcessID)
End If

If lProcessID Then
'Give Kill permissions to this process
lhThisProc = GetCurrentProcess

OpenProcessToken lhThisProc, TOKEN_ADJUST_PRIVILEGES Or TOKEN_QUERY,
lhTokenHandle
LookupPrivilegeValue "", SE_DEBUG_NAME, tLuid
'Set the number of privileges to be change
tTokenPriv.PrivilegeCount = 1
tTokenPriv.TheLuid = tLuid
tTokenPriv.Attributes = SE_PRIVILEGE_ENABLED
'Enable the kill privilege in the access token of this process
AdjustTokenPrivileges lhTokenHandle, False, tTokenPriv, Len(tTokenPrivNew),
tTokenPrivNew, lBufferNeeded

'Open the process to kill
lhwndProcess = OpenProcess(PROCESS_TERMINAT, 0, lProcessID)

If lhwndProcess Then
'Obtained process handle, kill the process
ProcessTerminate = CBool(TerminateProcess(lhwndProcess, lExitCode))
Call CloseHandle(lhwndProcess)
End If
End If
On Error GoTo 0
End Function

Public Function TerminerProcessus(nom_process) As String
Dim i As Integer
Dim hSnapshot As Long
Dim uProcess As PROCESSENTRY32
Dim r As Long
Dim nom(1 To 100)
Dim num(1 To 100)
Dim nr As Integer
nr = 0
hSnapshot = CreateToolhelpSnapshot(TH32CS_SNAPPROCESS, 0&)
If hSnapshot = 0 Then Exit Function
uProcess.dwSize = Len(uProcess)
r = ProcessFirst(hSnapshot, uProcess)
Do While r
nr = nr + 1
nom(nr) = uProcess.szexeFile
num(nr) = uProcess.th32ProcessID
r = ProcessNext(hSnapshot, uProcess)
Loop
For i = 1 To nr
If InStr(UCase(nom(i)), UCase(nom_process)) <> 0 Then
ProcessTerminate (num(i))
Exit For
End If
Next i
End Function

Public Function ListerProcess(Destination As ListBox)
Dim i As Integer
Dim hSnapshot As Long
Dim uProcess As PROCESSENTRY32
Dim r As Long
hSnapshot = CreateToolhelpSnapshot(TH32CS_SNAPPROCESS, 0&)
If hSnapshot = 0 Then Exit Function
uProcess.dwSize = Len(uProcess)
r = ProcessFirst(hSnapshot, uProcess)
Do While r
Destination.AddItem uProcess.szexeFile
r = ProcessNext(hSnapshot, uProcess)
Loop
End Function

--
Merci, @+, bye, Joe
troll75 AROBASE iFrance POINT com
------------------------------------------
Ce message est plein de virus "certifiés"
Le_Troll, éleveur de Trolls depuis César, qui disait:
Avec une hache, celui qui tient le manche a toujours raison !
------------------------------------------


"Claude Azoulai" a écrit dans le message de news:
291d01c47e27$bdc89500$
Bonjour
Je te remercie bien de ta collaboration.
Mais mon but était d'arrêter un seul programme et je me
suis probablement mal expliqué.
J'ai vu qu'il y avait une API qui permet de terminer un
programme dont on connait le handle.
Problème : je n'ai pas trouvé le moyen de récupérer ce
handle.
Dans tous les cas, je te remercie bien de l'aide que tu
m'a fourni.
A bientôt peut-être
Claude
-----Message d'origine-----
Bonjour,

Si on peut arrêter... mais tu ne peux pas faire un


programme qui, dés
qu'il est lancé va arrêter toutes les autres


applications connectées, les
utilisateurs ne voient peut être pas ça de cette façon,


généralement un tel
programme, s'il ne peut accéder au modem, dit "qu'il ne


peut y accéder, de
fermer toutes les applications qui y accèdent...", mais


de là à fermer
d'autorité tout ce qui est connecté au modem, lol, ça ne


se fait guère...

D'autre part, sur un modem téléphonique c'est


rarement une connexion
permanente... De plus, les anti-virus et flammes


risquent de se mettre en
marche contre intrus non déclaré qui tente d'accéder au


modem (ton
programme), alors il y a là aussi un risque de générer


un refus d'accès (à
étudier)...

Oui, si tu as le nom de ce que tu as fermé, tu peux


relancer avec:

Shell "nom_programme.exe"

A l'origine ta question si je me souviens bien,


portait sur le fait de
fermer les applications qui s'ouvraient toutes seules au


lancement sur ton
PC, maintenant tu changes, voulant fermer sur n'importe


quel ordinateur,
tout ce qui accède au modem téléphonique, ce n'est plus


le même registre
totalement...

Voici de quoi fermer tout ce qui traîne, mais a


priori je ne sais pas
tester qui accède au modem pour fermer l'applie, voir ce


que d'autres en
diront...

Private Declare Function ExitWindowsEx Lib "user32"


(ByVal uFlags As Long,
ByVal dwReserved As Long) As Long
'

Dim retour As Long

'

Tout fermer sans quitter Windows

retour = ExitWindowsEx(0, 0)

Unload Me End



Fermer les applications qui ne répondent plus sans


quitter

Retour = ExitWindowsEx(4, 0)

Unload Me


--
Merci, @+, bye, Joe
troll75 AROBASE iFrance POINT com
------------------------------------------
Ce message est plein de virus "certifiés"
Le_Troll, éleveur de Trolls depuis César, qui disait:
Avec une hache, celui qui tient le manche a toujours


raison !
------------------------------------------


"claude Azoulai" a écrit dans


le message de news:
28a301c47df5$180ef730$
excuse moi
Le programme incriminé est le Fax Microsoft(carpserv.exe
dans system32), mais ma demande est plus générale car je
désire donner mon application à des amis et je ne connais
pas d'avance quel programme il faudrat arrêter.
Si il n'y a pas de possibiliter d'arrêter un programme
qui tourne soit par une API ou une commande directe alors
tanpis et merci quand même.
Claude Azoulai

-----Message d'origine-----
Eh, tu veux poser ta question en boucle ???

Je t'ai déjà répondu à ça, lol, faudrait commencer


par savoir comment
qu'elle s'appelle ton application qui téléphone toute


seule, et surtout d'où
elle démarre (Base de registres, fichier INI,


menu "démarrage"?)...

D'une part, je t'ai parlé de "BDR", tu ne savais pas


ce que c'était,
j'en déduis que tu maîtrises mal les accès à la BDR (ce


qui peut ariver à
tout le monde), mais alors, ça risque d'être dangereux


pour ton ordinateur
si tu vas la manipuler, tu aurais tout intérêt à laisser


ça comme c'est...

Toutefois, comme le client est roi (tant qu'il


paye), tu m'as écrit, je
t'ai ré-pondu... sans nouvelle...
Alors, pas la peine de demander toujours la même chose,


réponds déjà aux
questions qui font suite à ta demande si tu veux avoir


une solution un
jour...

Bonjour chez toi :o)



--
Merci, @+, bye, Joe
troll75 AROBASE iFrance POINT com
------------------------------------------
Ce message est plein de virus "certifiés"
Le_Troll, éleveur de Trolls depuis César, qui disait:
Avec une hache, celui qui tient le manche a toujours


raison !
------------------------------------------


"Claude Azoulai" a écrit dans


le message de news:
250e01c47deb$87ff0440$
Bonjour et merci de votre aide.

J'ai réalisé une application de répertoire téléphonique
dans lequel je peux appeler directement un




correspondant.

Il se trouve que souvent un programme est en train
d'utiliser le modem.

Mon but est, en ayant entré dans les réglages, le chemin
et le nom du programme incriminé, de l'arrêter
automatiquement à l'ouverture de mon application (mon
problème), et de le relancer à la fermeture de cette
application (une commande shell devrait suffire).

Si quelcun pouvais m'aider ce serait formidable.

Merci encore.

Claude Azoulai



.





.



Avatar
le_troll
Tiens, ça devrait être les handles des processus qui tournent, tu disais que
c'est ça qu'il te fallait...
(avis, certains n'aiment pas être fermés de force, genre Word, qui ta
balance ensuite une procédure de reprise)...

Form1
List1
Sub Form_Load()
List1.Clear
GetWindowsList
End Sub
'---------------------

Module1
Public Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA"
_
(ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As
Long
Public Declare Function EnumWindows Lib "user32" _
(ByVal lpEnumFunc As Long, ByVal lParam As Long) As Long
'


Public Function GetWindowsList()
Dim lgRep As Long
'
stGetWindowsList = vbNullString
lgRep = EnumWindows(AddressOf EnumWindowsProc, 0)
End Function


Public Function EnumWindowsProc(ByVal lgHwnd As Long, ByVal lgParam As Long)
As Long
Dim stTmp As String, lgTmp As Long, lgRet As Long
'
stTmp = Space$(120)
lgTmp = 119
lgRet = GetWindowText(lgHwnd, stTmp, lgTmp)
If Len(stTmp) > 1 And lgRet <> 0 Then
Form1.List1.AddItem Format(lgHwnd, "00000000") & " : " & stTmp
End If
EnumWindowsProc = 1
End Function
'-----------------------FIN-------------

--
Merci, @+, bye, Joe
troll75 AROBASE iFrance POINT com
------------------------------------------
Ce message est plein de virus "certifiés"
Le_Troll, éleveur de Trolls depuis César, qui disait:
Avec une hache, celui qui tient le manche a toujours raison !
------------------------------------------


"Claude Azoulai" a écrit dans le message de news:
291d01c47e27$bdc89500$
Bonjour
Je te remercie bien de ta collaboration.
Mais mon but était d'arrêter un seul programme et je me
suis probablement mal expliqué.
J'ai vu qu'il y avait une API qui permet de terminer un
programme dont on connait le handle.
Problème : je n'ai pas trouvé le moyen de récupérer ce
handle.
Dans tous les cas, je te remercie bien de l'aide que tu
m'a fourni.
A bientôt peut-être
Claude
-----Message d'origine-----
Bonjour,

Si on peut arrêter... mais tu ne peux pas faire un


programme qui, dés
qu'il est lancé va arrêter toutes les autres


applications connectées, les
utilisateurs ne voient peut être pas ça de cette façon,


généralement un tel
programme, s'il ne peut accéder au modem, dit "qu'il ne


peut y accéder, de
fermer toutes les applications qui y accèdent...", mais


de là à fermer
d'autorité tout ce qui est connecté au modem, lol, ça ne


se fait guère...

D'autre part, sur un modem téléphonique c'est


rarement une connexion
permanente... De plus, les anti-virus et flammes


risquent de se mettre en
marche contre intrus non déclaré qui tente d'accéder au


modem (ton
programme), alors il y a là aussi un risque de générer


un refus d'accès (à
étudier)...

Oui, si tu as le nom de ce que tu as fermé, tu peux


relancer avec:

Shell "nom_programme.exe"

A l'origine ta question si je me souviens bien,


portait sur le fait de
fermer les applications qui s'ouvraient toutes seules au


lancement sur ton
PC, maintenant tu changes, voulant fermer sur n'importe


quel ordinateur,
tout ce qui accède au modem téléphonique, ce n'est plus


le même registre
totalement...

Voici de quoi fermer tout ce qui traîne, mais a


priori je ne sais pas
tester qui accède au modem pour fermer l'applie, voir ce


que d'autres en
diront...

Private Declare Function ExitWindowsEx Lib "user32"


(ByVal uFlags As Long,
ByVal dwReserved As Long) As Long
'

Dim retour As Long

'

Tout fermer sans quitter Windows

retour = ExitWindowsEx(0, 0)

Unload Me End



Fermer les applications qui ne répondent plus sans


quitter

Retour = ExitWindowsEx(4, 0)

Unload Me


--
Merci, @+, bye, Joe
troll75 AROBASE iFrance POINT com
------------------------------------------
Ce message est plein de virus "certifiés"
Le_Troll, éleveur de Trolls depuis César, qui disait:
Avec une hache, celui qui tient le manche a toujours


raison !
------------------------------------------


"claude Azoulai" a écrit dans


le message de news:
28a301c47df5$180ef730$
excuse moi
Le programme incriminé est le Fax Microsoft(carpserv.exe
dans system32), mais ma demande est plus générale car je
désire donner mon application à des amis et je ne connais
pas d'avance quel programme il faudrat arrêter.
Si il n'y a pas de possibiliter d'arrêter un programme
qui tourne soit par une API ou une commande directe alors
tanpis et merci quand même.
Claude Azoulai

-----Message d'origine-----
Eh, tu veux poser ta question en boucle ???

Je t'ai déjà répondu à ça, lol, faudrait commencer


par savoir comment
qu'elle s'appelle ton application qui téléphone toute


seule, et surtout d'où
elle démarre (Base de registres, fichier INI,


menu "démarrage"?)...

D'une part, je t'ai parlé de "BDR", tu ne savais pas


ce que c'était,
j'en déduis que tu maîtrises mal les accès à la BDR (ce


qui peut ariver à
tout le monde), mais alors, ça risque d'être dangereux


pour ton ordinateur
si tu vas la manipuler, tu aurais tout intérêt à laisser


ça comme c'est...

Toutefois, comme le client est roi (tant qu'il


paye), tu m'as écrit, je
t'ai ré-pondu... sans nouvelle...
Alors, pas la peine de demander toujours la même chose,


réponds déjà aux
questions qui font suite à ta demande si tu veux avoir


une solution un
jour...

Bonjour chez toi :o)



--
Merci, @+, bye, Joe
troll75 AROBASE iFrance POINT com
------------------------------------------
Ce message est plein de virus "certifiés"
Le_Troll, éleveur de Trolls depuis César, qui disait:
Avec une hache, celui qui tient le manche a toujours


raison !
------------------------------------------


"Claude Azoulai" a écrit dans


le message de news:
250e01c47deb$87ff0440$
Bonjour et merci de votre aide.

J'ai réalisé une application de répertoire téléphonique
dans lequel je peux appeler directement un




correspondant.

Il se trouve que souvent un programme est en train
d'utiliser le modem.

Mon but est, en ayant entré dans les réglages, le chemin
et le nom du programme incriminé, de l'arrêter
automatiquement à l'ouverture de mon application (mon
problème), et de le relancer à la fermeture de cette
application (une commande shell devrait suffire).

Si quelcun pouvais m'aider ce serait formidable.

Merci encore.

Claude Azoulai



.





.