2016-11-24 98 views
0

我需要的是在Windows 8中程序化地杀死已启动的Metro应用程序。如何从其他程序中编程关闭城域应用程序?

难道仅仅是一个简单的过程,我会写

Process.GetProcessById(processId).Kill() 

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

但这些并不在我的情况下工作。

我也试过这个WINAPI函数终止进程

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

它实际上终止的过程中,我可以看到,该过程不会在任务管理器已经不复存在,但我仍然可以看到应用半生不死(IE上的图片):

still alive IE

所以,我跑出来的想法。任何帮助?

已更新:

也许我的过程列表将有任何帮助。这之前,我杀了什么:

audiodg:3200 CMD:4588 conhost:5820 CSRSS:2144 CSRSS:416 CSRSS:480 DeploymentManagerService:1756 DWM:796 DWM:2852 资源管理器:1592 空闲:0 IEXPLORE:5696 IEXPLORE:5644 LogonUI:2140 LSASS:572 RDPCLIP:3540 接收机:1668 RUNDLL32:1432 SACMonitor:3344 SACSrv:1888年 SearchIndexer:2312 发件人:968个 服务:564 短信:312 spoolsv:1340 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 系统:4 taskhost:6036 taskhost:3040 taskhostex:1440 VSSVC:2732 wininit:464 Winlogon中:524 Winlogon中:2416 WMIPRVSE:168 WUDFHost:1096

+0

IE(桌面/城域网)采用多道工序,确保你杀了所有的人 – magicandre1981

+0

谢谢你的答案,请看看我的回复迈克尔。 – user1793358

回答

0

@ magicandre1981是相当正确的IE会运行多个进程通过如此关闭一个它的PID不会关闭整个应用程序只是一个实例,在它

例如

image of taskmanger

,你可以看到Chrome是在PID 17816,3140运行.........

意义关闭一个不会关闭Chrome

关闭所有进程就像一个网页浏览器试试以下

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

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

谢谢你的回答!但至少有两个原因似乎并不是我的情况:1)我对任何城域应用程序都有同样的问题(我已经测试过音乐,视频,金融等内置微软)和2)甚至如果我杀死所有标有ie name的进程,它仍然活着。 我已经添加到主要问题的进程列表 – user1793358

相关问题