2013-03-21 3 views
1

은 왼쪽 상단에있는 돋보기 유리는 다음과 같습니다Mac OS의 색상 선택 도구에서 돋보기 글래스를 구현하는 방법은 무엇입니까?

나는이 방법을 시도했지만 모두 실패했습니다.

  1. 돋보기 유리를 클릭하면, 다음 때까지 모든 이벤트를 먹고 NSApplicationnextEventMatchingMask:untilDate:inMode:dequeue: 전화, (, 돋보기 유리의 이미지와 커서, 또는 crossfair 무엇이든) 새로운 커서를 생성하고 밀어 우리 NSLeftMouseUp 이벤트를 받으십시오. 그것은 효과가 있었지만 완벽하지는 않았습니다. 클릭 지점이 원본 창을 벗어나면 다른 창이나 앱이 맨 앞에 정렬됩니다.

  2. NSColorPanel을 생성하고 가짜 마우스 클릭 이벤트를 패널로 보냅니다. 색상환에서 작동하지만 이벤트 위치를 돋보기 버튼으로 변경하면 아무 효과가 없습니다.

[1]의 질문 : 사용자가 왼쪽 버튼을 클릭 할 때까지 모든 시스템 마우스 이벤트를 전달하는 것을 어떻게 금지 할 수 있습니까?

[2] 질문 : 가능합니까?

응답 해 주셔서 감사합니다.

+0

뭘 하려는지 확실하지 않습니다. – bneely

+1

@bneely, 나는 그것이 그가 원하는 것을 아주 분명하다고 생각한다. 나는 돋보기가 사실 커서를 오버레이하는 불투명 한 NSWindow라고 생각할 것입니다 (또는 커서 이미지가 십자형으로 튀어 나옵니다). – CodaFi

답변

2

석영 이벤트 우리는 시스템 이벤트가 파견 차단하려면 서비스를 사용할 수 있지만, 2 문제가 :

  1. 접근성은 사용자가 사용하도록 설정해야합니다;
  2. 석영 이벤트 서비스는 샌드 박스에서 금지됩니다.

방법 1을 성공시킬 수 없습니다.

@CodaFi에서 영감을 얻어 NSWindow의 하위 클래스를 사용하기로 결정했습니다. 샘플 프로젝트는 gitbub https://github.com/wentingliu/ScreenPicker에서 만들어지고 체크 아웃하십시오.