나는 서비스가 시작될 때 시작되고 서비스가 중지되면 종료되어야하는 모든 사용자 세션에서 실행할 수있는 서비스 및 일부 하위 프로세스가있는 Delphi에서 2 개의 프로그램을 보유하고 있습니다.서비스에서 안전하게 응용 프로그램 닫기
서비스가 중지되면 formClose/FormDestroy 이벤트를 catch하도록 안전하게 자식 응용 프로그램을 닫아야합니다.
서비스는 데스크톱 통신을 사용할 수 없으므로 WM_Close 등과 같은 WM를 해당 프로세스에 보낼 수 없습니다.
그래서
...를 TerminateProcess는 formClose/FormDestroy 이벤트 내 자식 프로세스에서 발생하지 않습니다 호출, 자식 프로세스의 종료 어떤 방법이 여기에 사용할 수있다?
현재 우리가 가진 유일한 생각은 각 사용자 세션에서 taskkill.exe/im process.exe를 실행하는 것입니다. 어떻게 든 죽은 프로세스로 하여금 formClose/FormDestroy를 실행하게 만듭니다. 어떻게 작동합니까? WM_CLOSE를 보내면됩니까?
따라서 단일 서비스와 데스크톱 앱 간에는 IPC가 없습니다. 파이프/소켓/맵핑을 통해 링크 된 경우 또는 서비스가 클라이언트와 직접 대화 할 수있는 경우 중지 이벤트 중에 자체를 종료하도록 지시 할 수 있습니다. –
* 표시 * : 그렇게하려면 : http://serverfault.com/a/151788 –
IPC를 구현하고 프로세스에 묻습니다. –