2011-03-02 2 views

답변

1

Shell_NotifyIcon 작품, 당신은 다음 COPYDATAstruct.NOTIFYICONDATA.hwnd에 GetWindowThreadProcessId를 호출하여 프로세스 ID를 얻을 수 있습니다.

... 물론 이것은 해킹이며 언제든지 변경 될 수있는 문서화되지 않은 정보에 의존합니다!

+0

문서화되지 않은 구현 세부 정보를 사용하려면 왜 후킹을해야합니까? TB_GETBUTTON과 ReadProcessMemory (http://www.ureader.com/msg/14841415.aspx) – Luke

+0

@ 루크를 통해 내부 구조를 직접 읽을 수 있습니다 : Win7에서 숨겨진 항목과 함께 사용할 수 있습니까? – Anders

+0

툴바 클래스는 숨겨진 버튼을 지원하지만 익스플로러가 어떻게 숨겨진 아이콘을 구현하는지에 달려 있습니다 (숨겨진 버튼인가, 아니면 버튼이없는 것입니까?). 알아내는 방법은 하나뿐입니다. – Luke

1

나는 이것이 가능하다고 생각하지 않습니다. 확실하게 Spy ++는 알림 영역이 "사용자 프로모션 알림 영역"이라는 단일 창임을보고합니다. 이 창은 궁극적으로 데스크톱 창을 부모로두고 알림 아이콘을 만든 프로세스와 관련이 없습니다.


음, 수에 의해 나는 앤더스는 의심의 여지 가능하다 제안처럼 해킹에 의지하지 않고 가능한 의미,하지만 난 OP가 찾고있는 상상하지 무엇! 당신은 탐색기에 주입하고이 메시지를 잡을 수있는 작업 표시 줄을 서브 클래 싱 경우, 특별한 WM_COPYDATA message to the taskbar를 전송하여

+0

질문에 디버깅 태그가 붙어 있습니다. 오늘 날 TraySaver라는 제품이 있었는데,이 작업을 수행 한 MS KB 기사 두 개 = = – Anders

+0

@Anders OP가 디버깅 태그를 사용하여 OP가 많은 프로세스를 해결하려고한다는 것을 의미합니다. 실행은 아이콘을 담당 한 것입니다. 그것이 나 였다면 프로세스 탐색기에서 설명과 회사 이름을보고 일치 항목을 찾을 수 있는지 확인했습니다. 그런 다음 프로세스를 종료하고 아이콘이 사라 졌는지 확인합니다. –

1

저는 Windows 7에서 '작업 표시 줄에 어떤 아이콘과 알림을 표시할지 선택하십시오'메뉴가 약간 도움이된다는 것을 깨달았습니다. 작업 표시 줄을 마우스 오른쪽 버튼으로 클릭하여 '등록 정보'로 이동 한 다음 '알림 영역'프레임에서 '사용자 정의 ...'버튼을 클릭하십시오.

해당 창의 각 행은 Windows 탐색기에서 보았던 작업 표시 줄 아이콘을 나타냅니다. 왼쪽 두 개의 rwos 중 맨 위는 작업 관리자에 표시된 프로세스의 설명이고 아래쪽은 작업 표시 줄 아이콘을 표시하는 창의 제목입니다.

이렇게하면 원래의 문제를 추적하는 데 도움이되었습니다. VisualSVN이 'Register me!'라는 메시지를 보여주었습니다. 뚜렷한 VisualSVN 프로세스가 실행 중이 아님에도 불구하고 시스템 트레이에 잔소리 창을 표시합니다. 결국 Visual Studio를 닫을 때이 잔소리창이 사라져서 Visual Studio에로드 된 VisualSVN 추가 기능 DLL이 잔소리 창을 생성한다는 것이 확실했습니다.