2010-07-28 99 views
3

如何強制應用程序(例如myapp.exe)在不同的應用程序中使用Windows CE上的C++關閉?使用C++在Windows CE上強制關閉應用程序

這種情況是,我以前安裝的某些軟件在升級到新版本時表現不正常。因此,我需要在繼續更新之前殺掉進程(從更新程序)。

回答

2

TerminateProcess? (MSDN

BOOL TerminateProcess(HANDLE hProcess, 
         DWORD uExitCode); 

您將需要HANDLE的過程中,你可以很容易地獲得使用Toolhelp32的API。可以找到它們用來枚舉系統上所有進程的例子here

0

我認爲ExitProcess比TerminateProcess更系統化。 ExitProcess提供乾淨的進程關閉,因爲TerminateProcess無條件退出進程。 語法ExitProcess的:

VOID ExitProcess(
    UINT uExitCode 
); 

欲瞭解更多信息,請訪問this鏈接。

這完全取決於您的應用程序如何退出。

+0

同意,但問題是關於強制關閉應用程序。如果應用程序不行爲,ExitProcess可能不會剪切它。另外,我不認爲ExitProcess可以用於不同的進程。 – Konrad 2010-07-28 10:20:11

+0

是的,它需要工作在不同的過程 – Chris 2010-07-28 10:21:01

+0

這是我最後一個聲明的意思,它取決於應用程序 是的..對於不同的進程TerminateProcess會做。 – user001 2010-07-28 10:46:40

0

要做的第一件事是發送一個WM_QUIT看看它是否可能優雅地關閉。 WM_QUIT應該會導致應用程序的消息泵循環退出並隨後終止。這應該允許應用程序清理乾淨的資源。

如果失敗,(並失敗後,才),那麼你可以使用toolhelp APIs發現過程(使用NOHEAPS創建快照,然後循環與第一個/下一個電話找到它),並使用T- erminateProcess終止它。