2013-07-17 4 views
8

필수적인 회사 통신 시스템 (Lync 및 Outlook)을 실행하는 Windows 7 VM이 있습니다. 내가 뭘하고 싶은지 시스템 트레이를 모니터링하고 내 호스트 컴퓨터 (Xubuntu 13.04)에 알림을 보내는이 Windows 컴퓨터에서 프로세스를 실행하므로 전자 메일 또는 IM을받을 때 알려줍니다 (이미 완벽하게 시도했습니다. RDP는 그렇게하기는하지만 비효율적 인 해결책입니다).Windows 시스템 트레이의 변경 사항을 감지하는 방법은 무엇입니까?

리눅스 나 네트워크 지향적 인 관계로 나는 비교적 쉽게 처리 할 수 ​​있습니다. 어떻게 해야할지 모르겠지만 Windows 시스템 트레이 상태를 쿼리하는 방법 (또는 상태 변경을 위해 이벤트 수신기를 연결하는 방법)입니다. 저는 C++과 Python에 익숙하지만 모든 가능한 솔루션을 제공 할 것입니다.

자세한 상태 정보가 바람직하지만 최소한 트레이에서 아이콘 수의 변화를 감지 할 수 있어야합니다.

답변

3

Windows에서 Visual Studio를 설치하는 경우 Visual Studio Tools 중에는 "Spy ++"라는 유용한 도구가 있습니다. 기본적으로 모든 창을 표시하고 특정 창에서받는 메시지를 볼 수있는 도구입니다. 이 도구를 사용

enter image description here

, 당신은 "Shell_TrayWnd", 바로 가기, 트레이, 시계 등 "시작 버튼"포함하는 전체 패널을 볼 수 있습니다. "찾기"메뉴를 사용하여 특정 창을 "창"으로 드래그하여 검색 할 수 있습니다.

트레이 창 자체가 "SysPager"(첨부 된 이미지의 000100D2)이므로이 창에 대한 메시지를 기록하고 Outlook에서 메일을받을 때이 창에서 어떤 유형의 메시지를 볼 수 있습니다.

그 다음에는이 창이 수신하는 모든 메시지를 듣고 "Spy ++"에서 본 내용을 기반으로 무슨 일이 일어 났는지 판단 할 수있는 코드를 작성할 수 있습니다.

이것은 시작하기위한 것입니다. 창 핸들을 가져오고 창에서받는 메시지를 수신하는 코드를 작성하는 것은 다른 부분이지만 MSDN 또는 StackOverflow에서 이미 다루어 졌다고 생각합니다. 특정 창 핸들 검색은 FindWindowEx 함수에 의해 수행되고 메시지를 청취하려면 SetWindowsHookEx 함수에 의해 수행되는 "후크"를 설정해야합니다. 후킹은 MSDN에서 꽤 잘 설명됩니다.

+3

"윈도우가받는 메시지를 듣는 것은 다른 부분이지만 MSDN이나 StackOverflow에서 이미 다루어 졌다고 생각합니다."하지만 * 질문 *이 나오고 있습니다. 당신의 대답은 그것이 가능할 것이라는 희망을 주지만, IMO는 그 질문에 답하지 않습니다. –