2016-11-24 103 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

相關問題