2013-05-21 3 views
2

프로세스가 종료 된시기를 프로그램 적으로 결정하기를 원했습니다. 다양한 포럼에서 검색하여 PsSetCreateProcessNotifyRoutine 루틴을 발견했습니다.프로세스가 종료시 알림을 보내는 방법

.NET Events for Process executable start :

또한, 나는 비슷한 StackOverflow의 질문을 가로 질러왔다.

허용되는 답변에서 사용 가능한 검색어가 표시됩니다. 그러나 나는이 질문을 아주 잘 이해하지 못하고있다.

누군가 내 솔루션을 구현할 수있는 방법을 제안 할 수 있습니까?

답변

3

직접 처리를 시작하거나 Process.GetProcesses()을 열거 나 Process.GetProcessesByName(...)을 호출하여 찾을 수 있습니다.

어떤 경우 든 처리 프로세스가 p입니다. 이제 Exited 이벤트에 등록하거나 p.WaitForExit()을 대기하십시오.

이 답변은 C# 태그를 기반으로합니다. 그러나 PowerShell과 마찬가지로 작동합니다. 구문 만 바뀔 수 있습니다. 따라서 PowerShell의 Process API (Start-Process 등)를 탐색해야합니다.

3

기본적으로 Windows 관리 API에 연결해야 시작 및 중지 된 프로세스를들을 수 있습니다. WMI는 프로그램에 통지를 보내 후에는합니다 (answer 기준) 중 하나의 내부 제어는 프로세스 이름을 얻을 수있을 것입니다 인수에서

private void ProcessEnded(object sender, EventArrivedEventArgs e) 
private void ProcessStarted(object sender, EventArrivedEventArgs e) 

을 얻을 것이다.

이렇게하면 관리되는 코드로 알림을 받게됩니다. 이제 다음 단계는 스크립트에이 알림을 보내고 WCF, RESTfull 호출과 프로세스 간 통신을 사용할 수 있는지 여부에 따라 매개 변수 등을 사용하여 스크립트를 실행하는 것입니다.

+0

감사합니다. 찾고 있었어. 나는 그것을 더 탐험 할 것이다. – rockstar

관련 문제