2008-11-07 5 views

답변

1

. 시스템 트레이에 대한 창 핸들을 얻는 것은 어렵지 않습니다. GetClassName()은 표준 TOOLBAR 공용 컨트롤의 클래스 이름 인 "ToolbarWindow32"를 반환합니다. 64 비트 OS에는 두 가지가 있음을 유의하십시오. 그런 다음 TB_GETBUTTONINFO처럼 메시지를 보낼 수 있습니다. 주요 전화 끊기는 선택할 수있는 버튼 ID와 버튼 위치가 반환 된 정보를 알 수 없다는 것입니다.

더 좋은 점은 단추를 잠그지 않고 단추가 움직이는 것입니다.

+0

감사합니다. 나는 이것을 의심했다. – AngryHacker

+3

https://github.com/rzhw/SuperNotifyIcon 분명히이를 수행합니다. 이 답변을 받았을 때 노출이 없었을 수도 있음을 이해합니다. 그러나 이전 버전의 Windows에서 작동하는 불가능하다고 말하는 것처럼 기본 호출을 통해 작업을 완료합니다. 또한 새로운 Windows 7 API를 통해이를 수행 할 수 있습니다. "너는 할 수 있다고 생각하지 않는다"는 말은 "너는 할 수 없다"보다 더 나은 대답이었을거야. – caesay

+1

내 게시물의 마지막 문장을 무시하지 않고 ** 작성자에게 신용을 부여하십시오. 그는 * Deprecated * 폴더에 코드를 넣고 "Here be dragons"와 같은 주석을 사용하여 매우 명확하게 만들었습니다. 당신은 조언을 무시할 수 있습니다, 당신은 그것을 downvote 수있는 편리하게 무효로하지 않습니다. –

4

실제로이 작업을 수행 할 수 있습니다. 여기에 얼마나 많은 것을 보여주는 코드가 있습니다.

NotifyIcon의 모든 마우스 이벤트에서 Control.MousePosition을 보면 마우스의 (x, y)가 포함되어 있습니다. ContextMenu를 양식/컨트롤에 위치 시키려면이 (x, y) 값을 사용하여 폼/컨트롤이 클릭 된 위치를 정확히 지정해야합니다.

이 두 가지의 좋은 예는 여기에 있습니다 :

여기

더 : 시행 착오의 긴 여행 후 http://code.msdn.microsoft.com/TheNotifyIconExample

2

, 내 통지 자신의 아이콘 로케이터의 개발, 내가 할 수있는 방법을 개발 @ zhwang이이 놀라운 프로젝트를 볼 때까지 최고의 위치 아이콘을 찾으십시오. SuperNotifyIcon. 이 프로젝트는 부정확 한 (내 자신의 개발과 같은) Windows 7 API의 새로운 기능에 이르기까지 알림 아이콘을 찾는 세 가지 방법이 있습니다. 이것은 명확한 대답입니다.

관련 문제