begin process at 2012 02 10 00:11:24
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Système

 > FERMETURE D'UN PROCESSUS PRÉCIS (KILL PROCESS)

FERMETURE D'UN PROCESSUS PRÉCIS (KILL PROCESS)


 Information sur la source

Note :
9,25 / 10 - par 4 personnes
9,25 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Système Source .NET ( DotNet ) Classé sous :processus, kill, fermeture, process, programme Niveau :Initié Date de création :21/09/2005 Date de mise à jour :20/12/2005 14:39:55 Vu :42 173

Auteur : capuccino_fr

Ecrire un message privé
Site perso
Ce membre participe au partage de revenus publicitaires
Commentaire sur cette source (28)
Ajouter un commentaire et/ou une note


 Description

Après avoir cherché longtemps sur le net, et n'ayant quasiment rien trouvé, je mets aujourd'hui un bout de code qui vous permet de killer tout processus de Windows.
Il suffit de mettre le nom que vous souhaitez en lieu et place de APPLICATION_A_KILLER, on peut bien sur utiliser du logique (OU, ET) dans la boucle de condition, pour fermer le procesus désiré. A chacun de savoir ce qu'il veut en faire... @ bientôt

Source

  • 'Fermeture des instances de APPLICATION_A_KILLER si ces applis sont ouvertes
  • Dim Prc() As Process = process.GetProcesses() 'on récupère la liste des processus de Windows: ATTENTION ce sont des tableaux
  • For x As Integer = 0 To UBound(Prc) 'on fait toute la liste dans une boucle
  • If Prc(x).ProcessName.ToUpper(New System.Globalization.CultureInfo("fr-FR", False)) = "APPLICATION_A_KILLER" Then 'Cette application nous embete ?
  • Prc(x).Kill() 'on la tue !!!!
  • End If
  • Next
'Fermeture des instances de APPLICATION_A_KILLER si ces applis sont ouvertes

Dim Prc() As Process = process.GetProcesses() 'on récupère la liste des processus de Windows: ATTENTION ce sont des tableaux
For x As Integer = 0 To UBound(Prc) 'on fait toute la liste dans une boucle
   If Prc(x).ProcessName.ToUpper(New System.Globalization.CultureInfo("fr-FR", False)) = "APPLICATION_A_KILLER" Then 'Cette application nous embete ?
       Prc(x).Kill() 'on la tue !!!!
   End If
Next

 Conclusion

Merci à planetesourcecode.com (http://www.planet-source-code.com/vb/scripts/Show Code.asp?txtCodeId=1918&lngWId=10) qui y a beaucoup contribué
et à Patrice Dargenton (http://patrice.dargenton.free.fr/CodesSources/XLD otNet.html) qui s'y réfère


 Historique

30 septembre 2005 16:31:51 :
Changement de commentaire
20 décembre 2005 14:39:55 :
mise à jour des mots clés

 Sources du même auteur

Source avec Zip Source avec une capture Source .NET (Dotnet) CALCUL DU NOMBRE DE LIGNES D'UN PROJET VB / COMPTEUR
Source avec Zip Source avec une capture Source .NET (Dotnet) OUTILS XML, GESTION D'UNE LISTVIEW, XSD
Source .NET (Dotnet) TESTER UNE CONNECTION INTERNET - PING

 Sources de la même categorie

Source avec Zip Source avec une capture AUTORISER/REFUSER L'EXECUTION DE PROCESSUS par pierreh51
Source avec Zip Source .NET (Dotnet) CLONE/FORK DES FLUX DE LA CONSOLE : PERMETTRE LA REDIRECTION... par ShareVB
Source avec Zip Source .NET (Dotnet) DÉFRAGMENTER UN FICHIER par ShareVB
Source avec Zip Source .NET (Dotnet) ECRAN DE VEILLE : DÉTECTER LE LANCEMENT/DÉCLENCHER/EMPÊCHER par ShareVB
Source avec Zip Source avec une capture DESACTIVER / ACTIVER LES MISES EN VEILLES PC par Arsena

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture Source .NET (Dotnet) YET ANOTHER (REMOTE) PROCESS MONITOR par violent_ken
Source avec Zip Source avec une capture Source .NET (Dotnet) COMMENT DÉTECTER LES PROCESSUS CACHÉS (VIRUS, ROOTKITS...) +... par violent_ken
Source avec Zip Source avec une capture Source .NET (Dotnet) COMMENT CONTRÔLER TOTALEMENT LES PROCESSUS D'UN PC DISTANT (... par violent_ken
Source avec Zip Source avec une capture Source .NET (Dotnet) YET ANOTHER PROCESS MONITOR par violent_ken
Source avec Zip Source avec une capture WIN++ OPTIONS AVANCÉES SUR LES FENETRES ET PROCESSUS WINDOWS... par MadM@tt

Commentaires et avis

Commentaire de cboulas le 21/09/2005 19:06:19

Utile, mais on est vraiment obliger de mettre : New System.Globalization.CultureInfo("fr-FR", False)) ?

Commentaire de Patrice99 le 22/09/2005 08:27:12

Pourquoi veux-tu tuer un process ? pour ma part j'ai completement indiqué la raison pour laquelle je devais tuer un processus : c'est parce que Office 2000 a légèrement été oubliée par Microsoft et que moi je distribue des logiciels .Net qui doivent fonctionner avec toutes les versions d'Office >= 2000.

Commentaire de capuccino_fr le 22/09/2005 09:28:31

Réponse à cboulas : "New System.Globalization.CultureInfo("fr-FR", False))" n'est nécessaire bien évidemment... il n'est la que pour palier à des problèmes de langue

Réponse à Patrice99  : Je veux tuer un process car j'en ai eu besoin pour un soft qui a besoin d'avoir un logiciel fermé avant d'exporter des données en automatique toutes les nuits. S'il n'est pas fermé, il n'est pas possible d'exporter quoi que ce soit. Et les données comptables, ca n'attend pas !!

@+

Commentaire de Sirocooo le 22/09/2005 10:39:56

Bon travail.

On aussi faire :

Public Shared Sub KillProcess(ByVal NomExeSansExt As String)
  Dim sProcess() As Process = Process.GetProcessesByName(NomExeSansExt)
  Dim i As Integer

  For i = 0 To sProcess.Length - 1
     sProcess(i).Kill()
  Next
End sub

Commentaire de cboulas le 22/09/2005 10:47:15

Merci Capuccino_fr, je ne savais pas je pensais que microsoft avais fait un trux standard accéssible quelque soit le pays ou langue :(
un méthode commune.
merci bien pour la réponse ;)

Commentaire de capuccino_fr le 22/09/2005 11:28:15

Merci Sirocooo
CBoulas: ca évite d'avoir des dossiers "fr" ou autre qui trainent dans le dossier d'application qui trainent avec des dll (tu en as certainement deja vus !!!). On ne garde que l'essentiel

@++

Commentaire de DAHOKHAN le 08/12/2005 21:31:10

il a l'air cool ton code mais hellas il ne marche pas chez moi

Commentaire de capuccino_fr le 09/12/2005 10:16:07

comment ca se fait? c'est compatible partout ou je l'ai testé: tous les windows possédant le Framework .Net. L'as tu installé ?

Commentaire de DAHOKHAN le 12/12/2005 21:01:09

oK j'avais pas vu que c'étais sur Vbnet et non je n'ai pas installer le Framework .Net.
désoles.
Mais j'ai qd même trouver mon bonheur merci by

Commentaire de DAHOKHAN le 12/12/2005 21:03:49

excuse j'avais pas vu que c'était un code .net et je e n'ais pas installer le framework.Net.
désolé.
Mais j'ai qud même trouvé mon bonheur.
merci!!!!!

Commentaire de capuccino_fr le 13/12/2005 09:24:44

pas de probleme,  mais j'ai souvent le probleme avec des potes... alors je preferais poser la question. @+
Ben

Commentaire de audklie le 23/06/2006 14:16:49

kkun a la meme solution en VBS please?
je narrive pas a transposer le code de facon a ce que ca marche
merci d'av

Commentaire de capuccino_fr le 23/06/2006 14:30:15

vbs = vb script ? pour excel?
je sais pas...

Commentaire de johann91 le 05/07/2006 14:19:29

Up.
Même question : j'ai essayé de traduire bêtement la syntaxe du code en VBScript, mais ça ne tourne pas. Quelqu'un a une idée ?
(Pour info, c'est le VBA qui est utilisé par Excel. Mais les 2 langages sont proches)

Commentaire de johann91 le 05/07/2006 14:36:01

Re,

J'ai trouvé la solution en VBSCript, en utilisant les WMI. Je poste au cas où ça intéresse quelqu'un :

Function killprocess(ProcessName)
dim objWMIService,colProcesses,objProcess
strComputer = "."

Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colProcesses = objWMIService.ExecQuery ("Select * from Win32_Process")        ' where Name='IEXPLORE.EXE'

For Each objProcess in colProcesses
if instr(objProcess.Name,ProcessName)<>0 Then
objProcess.Terminate()
End If
Next
End Function

Commentaire de daviddubois le 12/07/2006 09:55:45

Bonjour Capuccino_fr, bonjour tout le monde,

J'utilise VB.net avec visual studio 2003.

Malheureusement, ton code ne fonctionne pas chez moi.

Je pilote excel avec Vb.net et j'aimerais qu'il arrête le processus de Excel quand il a fini car j'utilise mon programme 20 fois par jour et hier, je me suis rendu compte qu'il y avait 20 processus de Excel ouvert.

Voici le code que j'utilise (pour fermer le processus ) :

'Fermeture des instances de APPLICATION_A_KILLER si ces applis sont ouvertes

        Dim Prc() As Process = Process.GetProcesses() 'on récupère la liste des processus de Windows: ATTENTION ce sont des tableaux
        For x As Integer = 0 To UBound(Prc) 'on fait toute la liste dans une boucle
            If Prc(x).ProcessName.ToUpper() = "EXCEL.EXE" Then 'Cette application nous embete ?
                Prc(x).Kill() 'on la tue !!!!
            End If
        Next

Ais-je fais une erreur ?

Merci pour ton (votre) aide.

Commentaire de capuccino_fr le 12/07/2006 10:17:52

Essaie : If Prc(x).ProcessName.ToUpper() = "EXCEL"
au lieu de   If Prc(x).ProcessName.ToUpper() = "EXCEL.EXE"

le .exe n'est pas toujours reconnu (voire jamais), donc essaie ainsi, tu m'en diras des nouvelles
@+
Ben

Commentaire de daviddubois le 12/07/2006 10:32:41

Salut,

Merci pour ta réponse rapide et efficace.

En effet il supprime le processus EXCEL.

Par contre, je pense que ta solution (qui est extraordinaire pour supprimer un processus) n'est pas adapté à mon problème.

Je t'explique :

J'ai un WindowsForm avec 5 boutons.

Quand je clique sur bouton1, un datagrid se lance, un bouton près du datagrid me permet d'envoyer les données vers excel.

Quand j'appuie sur ce bouton, le fichier Excel se lance, se remplit.

Je regarde les processus, EXCEL.EXE est présent au moment ou j'appuie sur le bouton près du datagrid.

Quand je ferme excel, le processus EXCEL.EXE ne se ferme pas.

Je retourne sur le menu principal de mon appli, j'appuie sur bouton2,  j'appuie sur le bouton du datagrid, excel se lance, se remplit et je ferme Excel, le processus ne part pas ---> deux processus excel déjà lancé.

Je refais la même chose avec bouton3 , 4 et 5 j'ai donc 5 processus Excel lancé.

Pour ma machine, ça passe vue que j'ai 1GB de mémoire mais je vais devoir installer cette application sur des machines n'ayant que 512 MB de RAM et là c'est plus gênant.

Par contre, quand je ferme l'application, tous les processus s'en vont.

Qu'en penses-tu ?

Merci encore pour ton aide.

DD

Commentaire de daviddubois le 12/07/2006 10:34:33

J'ai oublié de mentionner et c'est très important :

Le problème avec ta solution c'est qu'il arrête le processus Excel, arrête donc Excel sans sauvegarder les changements dans la sheet excel (je sais que je pourrais lui demander de sauvegarder avant, mais bon...)

Commentaire de capuccino_fr le 12/07/2006 11:52:07

je te dirai de mettre une fonction TerminerProcessus :

public sub TerminerProcessus ( NomProcessus as string)
       Dim Prc() As Process = Process.GetProcesses()
        For x As Integer = 0 To UBound(Prc)
            If Prc(x).ProcessName.ToUpper() = NomProcessus.ToUpper Then
                Prc(x).Kill() 'on la tue !!!!
            End If
        Next
end sub

et a chaque fois que tu appuies sur le bouton suivant (n°2, n°3 etc), tu fais appel a cette fonction AVANT de lancer l'autre excel. C'est a dire que lorsque tu appuies sur le bouton, tu lances:
declaration de ta fonction

sub Bouton_click() handles ....

TerminerProcessus("EXCEL")
application.doEvents 'etre sur que la fonction se termine avant la suite

--- Le reste de ton code : appel a excel et remplissage
end sub

Dis nous si ca fonctionne
@+
ben

Commentaire de julien_u le 25/08/2006 10:22:05

Merci bcp johann91 pour la version VBS, ca m'est très utile !!!

tchaoooo

Ju

Commentaire de tigre44 le 19/01/2007 14:55:44

Merci pour cette source, simple à comprendre et fonctionne trés bien.

Commentaire de djamelbarache le 24/04/2007 17:45:54

merci beaucoup pour ton code cela ma sauvé la vie!!!!
merciiii et grand merci

Commentaire de capuccino_fr le 24/04/2007 17:53:55

de rien. si ca t'a sauvé la vie, j'en suis heureux ;) !!!!!!!!!!!!!!!!
@ bientot

Commentaire de mabrouklepoux le 15/11/2007 15:14:44

super les mecs !
y aurait il un moyen de savoir si le process est visible ou non ???
je voudrais tuer que les excel qui sont en mode invisible !

pour info : quand je veux faire ca à la main (tuer les excel invisible), je vais dans le gest des taches (CTRL + SHIFT + ECHAP)
tri par nom pour voir tout les excel en cours
je vais sur un de mes fichiers excel ouvert, et faiot des actions de dans (genre ctrl+S)
et là, je vois le pid du proc changer, donc je sais que celui ci est pas à tuer.
verriez vous un moyen de faire ca ???
par avance merci !

PS : cette source est quand meem particulièrement dangereuse !
on pourrais faire un simple fichier excel, qui à l'ouverture vienne péter tout les process !!!

Commentaire de ABF le 25/05/2009 10:55:37

Bonjour,

Faire un while avec un test de kill ne serais pas plus optimisé en temps ?

(exemple algo)
i=0
isKill=false
While i < nbProcs or isKill = false
  if procName = "nom rechercheé" then
     kill proc
     isKill = true
  else
     i+=1
  end if
Wend

Commentaire de tadamob le 09/09/2011 22:19:00

Il y a beaucoup plus simple u_u la vous allé chercher loin pour pas grand chose ...

For Each RunningProcess In Process.GetProcessesByName("NOM DU PROCESSUS")
            RunningProcess.Kill()
        Next

Désolé pour le Up mais sa peut toujours servir ...

Commentaire de Sentynel le 06/12/2011 13:48:47

Merci mais je pense que "(New System.Globalization.CultureInfo("fr-FR", False))" n'est pas utile.

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Excel-process ne se kill pas après fermeture de mon fichier [ par mastere30 ] Hello,voici un truc encore tout nouveau pour moi.J'ai crée un formulaire Excel avec une grosse macro VBA. Quand je l'utilise via Excel normale, pas de Kill un process bien definie [ par ImmortalPC ] Salut,D&#233;j&#224; sachez que je connais tr&#232;s peu le VB.Ma question est comment tuer un processus bien definie?Pour l'exemple le processus sera Detecter la fermeture d'un process [ par klingfilm ] Bonjour a tous,Dans mon application VB, je lance un autre programme a l'aide d'un objet process. Cependant, je desire detecter l'evenement lorsque l'u fermeture application externe au programme créé [ par Le grand Jisay ] Bonjour à tous,J'ai créé il y a peu un petit programme qui lorsque une forme se charge, lance un autre programme. L'autre programme se lance correctem Trouver le PID d'un processus avec le nom de l'EXE [ par Tioneb ] Salut,Bon, je sais que je vais poser une question "simple" mais je n'arrive pas à trouver la solution tout seul. Je m'embrouille les pinceaux entre le Infos sur les processus [ par MadM@tt ] Bonjour à tous,voilà je crée une bibliothèque de gestion de processus et j'aimerais proposer des fonctions permettant de récupérer, par exemple, le no processus invisible [ par delroy ] bonjour ! kan je demarre mon pc, dans le gestionnaire de tache , jai une ccharge dediée de 135 MO, pour un nombre de 18 processus , mais kan je calcul


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,390 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales