2009-09-03 6 views
0

C# i에서는 process.Kill() 프로세스를 사용하여이 이벤트를 감지하는 방법을 죽인 응용 프로그램에서 동시에 을 종료 하시겠습니까?Kill Process 이벤트를 감지하는 방법

현재 : Application.ApplicationExit 이벤트가 실행되지 않았습니다. 그것은을 winform 인 경우에

+0

아마도 이것은 질문의 정신이 아닙니다.하지만 프로세스에서 프로세스를 "처리하거나"감지하지 않으면 사용자가 강제로 프로세스를 종료 할 수있는 메커니즘이 항상 있음을 알아 두는 것이 중요합니다. "탐지"코드에서 무엇을하려고합니까? – reuben

+0

@Reuben 창이 닫히거나 응용 프로그램이 종료되면 일부 데이터가 저장되며 이는 내 응용 프로그램에 필요합니다. – guaike

+4

저의 요점은 ... 예기치 않은 프로세스 종료의 경우에 대비하여 데이터를 저장할 수있는 기회를 얻는 데 의존해서는 안됩니다. 가능한 한 많이이 작업을 수행 할 수는 있지만 데이터 저장 기회를 제공하지 않고 응용 프로그램을 종료시킬 수있는 이벤트가 항상 있음을 알아야합니다. (예를 들어, 시스템의 전원 코드를 뽑을 수 있습니다.) 나는 까다 롭지 않다는 것을 의미하지는 않습니다. 비슷한 질문을 한 다른 사람들을 가리키고 싶었습니다. – reuben

답변

1

, 당신은 이벤트 FormClosing을 캡처하고 확인할 수 있습니다 CloseReason :

None 
WindowsShutDown 
MdiFormClosing 
UserClosing 
TaskManagerClosing 
FormOwnerClosing 
ApplicationExitCall 
+1

그러나 process.Kill() 메서드를 사용하는 경우 FormClosing 이벤트가 실행되지 않았습니다. – guaike

+2

@guaike, OS가 그렇듯이 강제 종료 될 이유가 없습니다. –

1

이 달성의 더 간단한 방법은 없습니다 코드 주입, API를 후킹 및 기타 기술의 숫자 불구하고 수 이 목표를 달성하는 데 익숙해 져야하지만 내 질문에 당신의 응용 프로그램이 예기치 않은 종료를 인식하는지 확인하기 위해 많은 추가 작업을 정말로하고 싶습니까? 다른 사람이 응용 프로그램을 종료하는 데 사용할 수있는 모든 가능한 방법을 주입/훅 (또는 선택한 모든 방법) 코드로 작성해야합니다. 누군가가 응용 프로그램을 종료 할 때 자신의 이벤트를 트리거 할 수있는 호출을 할 때 그런 사건을 처리하고 나가기 위해 준비하십시오. 기본적으로이 기능을 사용하면 다른 사람이 응용 프로그램을 닫지 못하도록 막을 수도 있습니다.

이러한 기술에 대한 추가 정보가 필요하면 알려 주시면 링크를 게시하겠습니다. 행운을 빕니다!

+0

안녕하세요, 저는이 주제에 관심이 있습니다. 이 링크에 대해 더 자세히 읽을 수있는 링크를 제공 할 수 있습니까? 미리 감사드립니다. – kamilw

관련 문제