2016-11-24 3 views
0

Ce dont j'ai besoin est de tuer l'application Metro lancée dans Windows 8 par programmation.Comment fermer une application de métro par programmation d'un autre processus?

Serait-il juste un processus simple, j'écrirais

Process.GetProcessById(processId).Kill() 

ou

var applicationProcess = Process.GetProcessById(processId); 
applicationProcess.CloseMainWindow(); 
applicationProcess.Close(); 

mais ceux-ci ne fonctionnent pas dans mon cas.

J'ai essayé également cette fonction winapi pour mettre fin à des processus

[DllImport("kernel32.dll", SetLastError = true)] 
[return: MarshalAs(UnmanagedType.Bool)] 
static extern bool TerminateProcess(IntPtr hProcess, uint uExitCode); 

Il termine en fait le processus, et je peux voir que le processus n'existe pas dans le Gestionnaire des tâches plus longtemps, mais je peux voir la demi-vie application (IE sur l'image):

still alive IE

donc, je suis à court d'idées. De l'aide?

mise à jour:

liste Probablement Mes processus serait de toute aide.Ici, il est avant avoir tué quoi que ce soit:

AudioDG: 3200 cmd: 4588 conhost: 5820 csrss: 2144 csrss: 416 csrss: 480 DeploymentManagerService: 1756 DWM: 796 DWM: 2852 explorateur: 1592 veille: 0 iexplore: 5696 iexplore: 5644 LogonUI: 2140 lsass: 572 Rdpclip: 3540 récepteur: 1668 rundll32: 1432 SACMonitor: 3344 SACSrv: 1888 SearchIndexer: 2312 Auteur: 968 services: 564 smss: 312 spoolsv: 1 340 sqlwriter: 1000 svchost: 1416 svchost: 780 svchost: 328 svchost: 856 svchost: 676 svchost: 2576 svchost: 2712 svchost: 1376 svchost: 832 svchost: 1004 svchost: 632 svchost: 1608 System: 4 TaskHost: 6036 TaskHost: 3040 taskhostex: 1440 VSSVC: 2732 wininit: 464 winlogon: 524 winlogon: 2416 WMIPRVSE: 168 WUDFHost: 1096

+0

IE (bureau/métro) utilise plusieurs processus, assurez-vous tué tous – magicandre1981

+0

Merci pour la réponse et s'il vous plaît jeter un oeil à ma réponse à Michael. – user1793358

Répondre

0

@ magicandre1981 est tout à fait correct IE exécuter plusieurs processus de fermeture si un via son pid ne fermera pas l'application entière juste une instance avec en elle

par exemple

image of taskmanger

que vous pouvez voir le chrome est en cours d'exécution sur pid 17816, 3140 .........

sens la fermeture d'un ne se ferme pas chrome

pour fermer tous les processus à quelque chose comme un navigateur web essayez suivant

 var proccessCollection = System.Diagnostics.Process.GetProcessesByName("firefox"); 

     foreach (var proccess in proccessCollection) 
     { 
      proccess.Kill(); 
     } 
+0

Merci pour la réponse! Mais cela ne semble pas être mon cas pour au moins deux raisons: 1) J'ai le même problème avec n'importe quelle application de métro (j'ai testé microsof intégré comme la musique, la vidéo, la finance et ainsi de suite) et 2) même si je tue tous les processus marqués avec ie nom, il est toujours vivant. Listes de processus que j'ai ajoutées à la question principale – user1793358