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

cboulas Messages postés 2641 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 8 janvier 2014 - 21 sept. 2005 à 19:06
Sentynel Messages postés 85 Date d'inscription jeudi 7 janvier 2010 Statut Membre Dernière intervention 13 juillet 2013 - 6 déc. 2011 à 13:48
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/33885-fermeture-d-un-processus-precis-kill-process

Sentynel Messages postés 85 Date d'inscription jeudi 7 janvier 2010 Statut Membre Dernière intervention 13 juillet 2013
6 déc. 2011 à 13:48
Merci mais je pense que "(New System.Globalization.CultureInfo("fr-FR", False))" n'est pas utile.
tadamob Messages postés 4 Date d'inscription mardi 12 juillet 2011 Statut Membre Dernière intervention 1 janvier 2012 2
9 sept. 2011 à 22:19
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 ...
cs_ABF Messages postés 227 Date d'inscription samedi 21 mai 2005 Statut Membre Dernière intervention 26 avril 2012
25 mai 2009 à 10:55
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
cs_mabrouklepoux Messages postés 84 Date d'inscription lundi 6 novembre 2000 Statut Membre Dernière intervention 25 juillet 2008 1
15 nov. 2007 à 15:14
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 !!!
capuccino_fr Messages postés 113 Date d'inscription vendredi 5 mars 2004 Statut Membre Dernière intervention 11 février 2008
24 avril 2007 à 17:53
de rien. si ca t'a sauvé la vie, j'en suis heureux ;) !!!!!!!!!!!!!!!!
@ bientot
djamelbarache Messages postés 29 Date d'inscription mercredi 21 mars 2007 Statut Membre Dernière intervention 9 septembre 2008
24 avril 2007 à 17:45
merci beaucoup pour ton code cela ma sauvé la vie!!!!
merciiii et grand merci
tigre44 Messages postés 15 Date d'inscription samedi 20 mai 2006 Statut Membre Dernière intervention 19 janvier 2007
19 janv. 2007 à 14:55
Merci pour cette source, simple à comprendre et fonctionne trés bien.
julien_u Messages postés 4 Date d'inscription dimanche 22 janvier 2006 Statut Membre Dernière intervention 4 juillet 2006
25 août 2006 à 10:22
Merci bcp johann91 pour la version VBS, ca m'est très utile !!!

tchaoooo

Ju
capuccino_fr Messages postés 113 Date d'inscription vendredi 5 mars 2004 Statut Membre Dernière intervention 11 février 2008
12 juil. 2006 à 11:52
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
daviddubois Messages postés 92 Date d'inscription vendredi 19 mars 2004 Statut Membre Dernière intervention 6 janvier 2012
12 juil. 2006 à 10:34
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...)
daviddubois Messages postés 92 Date d'inscription vendredi 19 mars 2004 Statut Membre Dernière intervention 6 janvier 2012
12 juil. 2006 à 10:32
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
capuccino_fr Messages postés 113 Date d'inscription vendredi 5 mars 2004 Statut Membre Dernière intervention 11 février 2008
12 juil. 2006 à 10:17
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
daviddubois Messages postés 92 Date d'inscription vendredi 19 mars 2004 Statut Membre Dernière intervention 6 janvier 2012
12 juil. 2006 à 09:55
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.
johann91 Messages postés 46 Date d'inscription jeudi 2 décembre 2004 Statut Membre Dernière intervention 21 juillet 2006
5 juil. 2006 à 14:36
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
johann91 Messages postés 46 Date d'inscription jeudi 2 décembre 2004 Statut Membre Dernière intervention 21 juillet 2006
5 juil. 2006 à 14:19
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)
capuccino_fr Messages postés 113 Date d'inscription vendredi 5 mars 2004 Statut Membre Dernière intervention 11 février 2008
23 juin 2006 à 14:30
vbs = vb script ? pour excel?
je sais pas...
audklie Messages postés 26 Date d'inscription mardi 6 décembre 2005 Statut Membre Dernière intervention 23 juin 2006
23 juin 2006 à 14:16
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
capuccino_fr Messages postés 113 Date d'inscription vendredi 5 mars 2004 Statut Membre Dernière intervention 11 février 2008
13 déc. 2005 à 09:24
pas de probleme, mais j'ai souvent le probleme avec des potes... alors je preferais poser la question. @+
Ben
cs_DAHOKHAN Messages postés 20 Date d'inscription mercredi 19 octobre 2005 Statut Membre Dernière intervention 12 décembre 2005
12 déc. 2005 à 21:03
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!!!!!
cs_DAHOKHAN Messages postés 20 Date d'inscription mercredi 19 octobre 2005 Statut Membre Dernière intervention 12 décembre 2005
12 déc. 2005 à 21:01
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
capuccino_fr Messages postés 113 Date d'inscription vendredi 5 mars 2004 Statut Membre Dernière intervention 11 février 2008
9 déc. 2005 à 10:16
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é ?
cs_DAHOKHAN Messages postés 20 Date d'inscription mercredi 19 octobre 2005 Statut Membre Dernière intervention 12 décembre 2005
8 déc. 2005 à 21:31
il a l'air cool ton code mais hellas il ne marche pas chez moi
capuccino_fr Messages postés 113 Date d'inscription vendredi 5 mars 2004 Statut Membre Dernière intervention 11 février 2008
22 sept. 2005 à 11:28
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

@++
cboulas Messages postés 2641 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 8 janvier 2014 16
22 sept. 2005 à 10:47
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 ;)
Sirocooo Messages postés 412 Date d'inscription mercredi 19 décembre 2001 Statut Membre Dernière intervention 7 avril 2008 1
22 sept. 2005 à 10:39
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
capuccino_fr Messages postés 113 Date d'inscription vendredi 5 mars 2004 Statut Membre Dernière intervention 11 février 2008
22 sept. 2005 à 09:28
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 !!

@+
cs_Patrice99 Messages postés 1221 Date d'inscription jeudi 23 août 2001 Statut Membre Dernière intervention 9 septembre 2018
22 sept. 2005 à 08:27
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.
cboulas Messages postés 2641 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 8 janvier 2014 16
21 sept. 2005 à 19:06
Utile, mais on est vraiment obliger de mettre : New System.Globalization.CultureInfo("fr-FR", False)) ?
Rejoignez-nous