다른 응용 프로그램을 시작하고 com을 통해 통신하는 C++ 콘솔 응용 프로그램이 있습니다. 나는 스폰 된 창 hWnd 있고 COM 응용 프로그램이 더 이상 열려 있으면 콘솔 응용 프로그램 자체를 죽이기 싶습니다. 어떻게이 일을 할 수 있습니까?hWnd가 존재하지 않으면 자체 종료
0
A
답변
3
이미 응용 프로그램간에 통신 중이므로 신호를 설정해야합니다. 창이 닫히면 '죽었습니다'라는 메시지가 콘솔 응용 프로그램으로 전송됩니다. 그런 다음 콘솔 앱을 적절히 닫을 수 있습니다.
hWnd를 검사하여이를 수행하려면 hWnd가 더 이상 유효하지 않은지를 알려주는 'IsWindow()'함수를 사용하면됩니다. 폴링 구성을 통해이 작업을 수행해야합니다.
또 다른 옵션은 다른 응용 프로그램이 사용자의 것이 아닌 경우 후크를 설치하고 창을 지우는 것을 감시하는 것입니다. 이 작업을 수행하려면 Windows 후크를 살펴보고 CBT 후크가 적절할 것입니다. 손상되는 창을 쉽게 볼 수 있습니다.
0
GetWindowThreadProcessId()를 호출 한 다음 OpenProcess()를 호출하십시오. 이제 프로세스 핸들이 신호되는지 테스트 할 수 있습니다. 또는 Wait()가 발생하면 테스트 할 수 있습니다.
관련 문제
- 1. .htaccess 파일이 존재하지 않으면 리디렉션
- 2. .htaccess url-file이 존재하지 않으면 재 작성
- 3. 그림이 존재하지 않으면 .htaccess로 no_picture.png 보여주기
- 4. MySQL : 행이 존재하지 않으면 0을 반환하십시오.
- 5. 값이 존재하지 않으면 DropDownList의 SelectedIndex를 0으로 바인딩
- 6. 문자열이 존재하지 않으면 디렉토리를 생성 하시겠습니까?
- 7. 파일이 존재하지 않으면 htaccess 리디렉션이 작동하지 않습니다.
- 8. 인덱스가 존재하지 않으면 Drop_existing에서 오류가 발생합니다.
- 9. PHP가 이미 존재하지 않으면 파일을 만들지 않습니다.
- 10. 자체 조인 된 테이블에 존재하지 않는 튜플
- 11. C# Windows 서비스 자체 종료 서비스
- 12. Vim : 커서가 존재하지 않으면 오류 메시지없이 소스 파일의 문자열로 이동
- 13. "존재하지 않으면 표 만들기"- 스키마를 확인하는 방법은 무엇입니까?
- 14. 파일이 존재하지 않으면 Maven 플러그인의 실행을 건너 뛰기
- 15. 정의 된 텍스트가 존재하지 않으면 Excel에서 조건부 색 지정
- 16. 고유 한 필드가없는 테이블에 이미 행이 존재하지 않으면 mysql을 삽입하십시오.
- 17. log4perl이 존재하지 않으면 log 디렉토리를 만들 수 있습니까?
- 18. Mysql, 1 쿼리로 행이 존재하지 않으면 다른 쿼리를 수행하십시오
- 19. HWND가 잘못된 경우 0을 반환하는 MessageBox
- 20. HWND가 데스크톱 자체인지 어떻게 알 수 있습니까?
- 21. n 초 동안 사용하지 않으면 WPF 응용 프로그램 종료
- 22. 특정 시간에 끝나지 않으면 Python 프로세스를 종료 하시겠습니까?
- 23. 파이썬 : 프로세스를 실행하고 1 시간 이내에 끝나지 않으면 종료 시키십시오.
- 24. 장고 : admin.py가 존재하지 않습니까?
- 25. OpenGL ES를 "종료"해야합니까?
- 26. MysqldResource를 사용하여 MySQL을 종료 또는 종료
- 27. 삽입 - 어디 존재하지 않습니다
- 28. 그렇지 않으면
- 29. HWND가 지정된 Visual Basic 컨트롤의 이름은 어떻게 얻을 수 있습니까?
- 30. NativeMethods가없는 hWnd가 주어진 윈도우의 위치/위치는 어떻게 찾습니까?
죄송합니다. 이것은 발생하기를 기다리고있는 경쟁 조건입니다. HWND는 간단한 번호이며 재사용됩니다. 그것이 투표 사이에 발생하면, 당신은 잃게됩니다. – MSalters