2012-10-25 2 views

답변

0

나는 이것에 관해 할 수있는 일이 없다고 강력히 생각합니다. 플러그인으로서 당신은 과정에서 손님 인 제 2 계급의 시민입니다.

+0

정말요? 포커스가있을 때 플러그인에서 모든 이벤트를 수신 할 수 있다고 생각했습니다.하지만 말씀하신대로 다른 바로 가기 키를 변경해야합니다. 비극입니다! – Magical

+0

Mac의 플러그인에는 실제로 창이 없으므로 OS와 관련하여 포커스를 얻지는 못합니다. 모든 이벤트는 관련성이 있다고 생각되는 이벤트를 전달하는 브라우저에서 가져옵니다. – taxilian

+0

도와 주셔서 감사합니다, taxilian. – Magical

0

명령 이벤트를 수락하면 NP_GetEntryPoints 메서드에서 NPPluginFuncs 구조체의 이벤트 멤버에 대한 콜백을 수신 대기해야합니다.

이 방법을 사용하면 모든 마우스 및 키보드 이벤트와 창 포커스 이벤트가 수신됩니다. 두 번째 인수를 void *에서 NPCocoaEvent로 형변환하면 이벤트 유형, 마우스 상태, 키 및 포커스 데이터와 같은 모든 필수 매개 변수를 찾을 수 있습니다.

NPCocoaEvent의 '데이터'유니언을 파기 전에 처리 할 이벤트 유형을 확인하십시오. 그렇지 않으면 EXC_BAD_ACCESS를 얻을 수 있습니다.

브라우저와 명령을 공유하는 데 문제가 있습니다. 제 경우에는 Command + O가 플러그인의 파일 열기 대화 상자 만 실행해야하지만 브라우저의 파일 열기 대화 상자도 실행 중입니다. 이벤트 처리 메서드에 TRUE를 반환하면 플러그인에서 이벤트를 처리했다고 브라우저에보고해야하지만 아직 운이 없습니다.