Sentynel
Messages postés85Date d'inscriptionjeudi 7 janvier 2010StatutMembreDernière intervention13 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és4Date d'inscriptionmardi 12 juillet 2011StatutMembreDernière intervention 1 janvier 20122 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és227Date d'inscriptionsamedi 21 mai 2005StatutMembreDernière intervention26 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és84Date d'inscriptionlundi 6 novembre 2000StatutMembreDernière intervention25 juillet 20081 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és113Date d'inscriptionvendredi 5 mars 2004StatutMembreDernière intervention11 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és29Date d'inscriptionmercredi 21 mars 2007StatutMembreDerniè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és15Date d'inscriptionsamedi 20 mai 2006StatutMembreDernière intervention19 janvier 2007 19 janv. 2007 à 14:55
Merci pour cette source, simple à comprendre et fonctionne trés bien.
julien_u
Messages postés4Date d'inscriptiondimanche 22 janvier 2006StatutMembreDerniè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és113Date d'inscriptionvendredi 5 mars 2004StatutMembreDernière intervention11 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és92Date d'inscriptionvendredi 19 mars 2004StatutMembreDerniè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és92Date d'inscriptionvendredi 19 mars 2004StatutMembreDerniè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és113Date d'inscriptionvendredi 5 mars 2004StatutMembreDernière intervention11 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és92Date d'inscriptionvendredi 19 mars 2004StatutMembreDerniè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és46Date d'inscriptionjeudi 2 décembre 2004StatutMembreDernière intervention21 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és46Date d'inscriptionjeudi 2 décembre 2004StatutMembreDernière intervention21 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és113Date d'inscriptionvendredi 5 mars 2004StatutMembreDernière intervention11 février 2008 23 juin 2006 à 14:30
vbs = vb script ? pour excel?
je sais pas...
audklie
Messages postés26Date d'inscriptionmardi 6 décembre 2005StatutMembreDernière intervention23 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és113Date d'inscriptionvendredi 5 mars 2004StatutMembreDernière intervention11 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és20Date d'inscriptionmercredi 19 octobre 2005StatutMembreDernière intervention12 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és20Date d'inscriptionmercredi 19 octobre 2005StatutMembreDernière intervention12 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és113Date d'inscriptionvendredi 5 mars 2004StatutMembreDernière intervention11 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és20Date d'inscriptionmercredi 19 octobre 2005StatutMembreDernière intervention12 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és113Date d'inscriptionvendredi 5 mars 2004StatutMembreDernière intervention11 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és2641Date d'inscriptionmercredi 2 juin 2004StatutMembreDernière intervention 8 janvier 201416 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és412Date d'inscriptionmercredi 19 décembre 2001StatutMembreDernière intervention 7 avril 20081 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és113Date d'inscriptionvendredi 5 mars 2004StatutMembreDernière intervention11 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és1221Date d'inscriptionjeudi 23 août 2001StatutMembreDerniè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és2641Date d'inscriptionmercredi 2 juin 2004StatutMembreDernière intervention 8 janvier 201416 21 sept. 2005 à 19:06
Utile, mais on est vraiment obliger de mettre : New System.Globalization.CultureInfo("fr-FR", False)) ?
6 déc. 2011 à 13:48
9 sept. 2011 à 22:19
For Each RunningProcess In Process.GetProcessesByName("NOM DU PROCESSUS")
RunningProcess.Kill()
Next
Désolé pour le Up mais sa peut toujours servir ...
25 mai 2009 à 10:55
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
15 nov. 2007 à 15:14
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 !!!
24 avril 2007 à 17:53
@ bientot
24 avril 2007 à 17:45
merciiii et grand merci
19 janv. 2007 à 14:55
25 août 2006 à 10:22
tchaoooo
Ju
12 juil. 2006 à 11:52
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
12 juil. 2006 à 10:34
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...)
12 juil. 2006 à 10:32
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
12 juil. 2006 à 10:17
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
12 juil. 2006 à 09:55
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.
5 juil. 2006 à 14:36
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
5 juil. 2006 à 14:19
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)
23 juin 2006 à 14:30
je sais pas...
23 juin 2006 à 14:16
je narrive pas a transposer le code de facon a ce que ca marche
merci d'av
13 déc. 2005 à 09:24
Ben
12 déc. 2005 à 21:03
désolé.
Mais j'ai qud même trouvé mon bonheur.
merci!!!!!
12 déc. 2005 à 21:01
désoles.
Mais j'ai qd même trouver mon bonheur merci by
9 déc. 2005 à 10:16
8 déc. 2005 à 21:31
22 sept. 2005 à 11:28
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
@++
22 sept. 2005 à 10:47
un méthode commune.
merci bien pour la réponse ;)
22 sept. 2005 à 10:39
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
22 sept. 2005 à 09:28
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 !!
@+
22 sept. 2005 à 08:27
21 sept. 2005 à 19:06