2010-07-28 9 views
3

다른 응용 프로그램의 Windows CE에서 C++을 사용하여 응용 프로그램 (예 : myapp.exe)을 강제 종료하려면 어떻게합니까?C++을 사용하여 Windows CE에서 응용 프로그램 강제 종료

새 버전으로 업그레이드 할 때 제대로 작동하지 않는 일부 소프트웨어의 이전 설치가있는 시나리오입니다. 따라서 업데이 트를 계속하기 전에 (업데이터에서) 프로세스를 종료해야합니다.

답변

2

TerminateProcess? (MSDN)

BOOL TerminateProcess(HANDLE hProcess, 
         DWORD uExitCode); 

당신은 쉽게 Toolhelp32 API를 사용하여 얻을 수있는 과정에 HANDLE가 필요합니다. 시스템에서 모든 프로세스를 열거하는 데 사용되는 샘플은 here입니다.

0

ExitProcess가 TerminateProcess보다 체계적인 접근 방식이라고 생각합니다. ExitProcess는 TerminateProcess가 프로세스를 무조건 종료 할 때 프로세스 종료를 제공합니다. ExitProcess에 대한 구문 :

VOID ExitProcess(
    UINT uExitCode 
); 

자세한 내용은 this 링크를 참조하십시오.

완전히 응용 프로그램에 따라 종료 방법에 따라 다릅니다.

+0

동의하지만, 응용 프로그램 종료를 강요하는 문제가있었습니다. ExitProcess는 응용 프로그램이 작동하지 않는 경우이를 잘라낼 수 없습니다. 또한 ExitProcess를 다른 프로세스에서 사용할 수 있다고 생각하지 않습니다. – Konrad

+0

네, 다른 프로세스에서 작동해야합니다 – Chris

+0

내 마지막 문장의 의미는 응용 프로그램에 따라 달라집니다. 다른 프로세스 인 TerminateProcess가 수행합니다. – user001

0

가장 먼저 할 일은 WM_QUIT을 보내서 정상적으로 종료되는지 확인하는 것입니다. WM_QUIT를 실행하면 앱의 메시지 펌프 루프가 종료되고 이후에 종료됩니다. 이렇게하면 앱이 리소스를 깨끗하게 정리할 수 있습니다.

실패한 경우에만 toolhelp APIs을 사용하여 프로세스를 찾은 다음 (NOHEAPS를 사용하여 스냅 샷을 만든 다음 첫 번째/다음 호출로 스냅 샷을 찾고 반복) T erminateProcess을 사용하여 종료 할 수 있습니다.