peekmessage 예제

인텔 인텔 IT 시스템에 대한 IT 빌드 정보는 인텔 IT 부서에서 다양한 라이선스 계약을 준수하기 위해 필요하다고 판단되는 소프트웨어 도구 세트와 함께 사전 설치되어 있습니다. 이 소프트웨어에는 바이러스 스캐너와 터미너스 보안 에이전트가 포함되어 있습니다. 스캐너와 모니터링 소프트웨어는 항상 실행되며 시스템에 추가 부하를 추가합니다. 엿보기 대 결과 #1 – 추가 결과 (큰 버전을 클릭)위에 표시된 테스트에서 또 다른 흥미로운 결과가 있습니다. 프로세스 + 백그라운드 열에서 Get 테스트가 짧을수록 동일한 Peek 테스트보다 더 많은 전력이 소모될 수 있습니다. 이 결과는 Get 테스트가 예상보다 훨씬 오래 실행했기 때문에 나타났습니다. 예를 들어 3분 간의 테스트는 4분 동안 실행되었습니다. 이는 응용 프로그램이 절전 모드에 들어 있었고 시간이 경과한 후 잘 종료될 때까지 종료되어야 한다는 것을 확인하기 위해 깨어나지 않았기 때문입니다. 따라서 응용 프로그램이 실행되는 시간이 훨씬 길어지고 총 전력이 소비되었습니다. 이 변칙을 제거하기 위해 아래와 같이 전체 테스트가 더 긴 기간 동안 실행되었습니다 #2.

여기서는 Peek 테스트에서 소비하는 전체 전력이 Get 테스트보다 크다는 것이 분명합니다. 보기 vs. 결과 #3 받기 – 추가 결과 때때로 응용 프로그램은 스레드의 메시지 루프 외부에서 스레드의 메시지 큐의 내용을 검사해야 합니다. 예를 들어 응용 프로그램의 창 프로시저가 긴 그리기 작업을 수행하는 경우 사용자가 작업을 중단할 수 있도록 할 수 있습니다. 응용 프로그램이 마우스 및 키보드 메시지에 대한 작업 중에 주기적으로 메시지 큐를 검사하지 않는 한 작업이 완료될 때까지 사용자 입력에 응답하지 않습니다. 그 이유는 창 프로시저가 메시지 처리를 완료할 때까지 스레드의 메시지 루프에 있는 DispatchMessage 함수가 반환되지 않기 때문입니다. 다른 스레드에서 보낸 메시지를 처리하기 전에 창 프로시저가 먼저 InSendMessage 함수를 호출해야 합니다. 이 함수가 TRUE를 반환하는 경우 창 프로시저는 다음 예제와 같이 스레드가 컨트롤을 생성하도록 하는 함수 앞에 ReplyMessage를 호출해야 합니다.

이전 예제 코드로 이 것을 시도했지만 유니 코드 / ANSI 번역, 타이머 콜백 호출 등과 같은 다양한 문제가 있어이 메서드가 고려하지 않고 사소한 응용 프로그램을 제외한 모든 응용 프로그램을 중단 할 가능성이 큽니다. 그래서 그것을 시도 하, 하지만 실제 코드에서 그것을 하지 마십시오 🙂 다음 예제에서는 PeekMessage를 사용하여 긴 작업 중에 마우스 클릭 및 키보드 입력에 대한 메시지 큐를 검사하는 방법을 보여 주며 있습니다.