2011-12-29 2 views
1

안녕 모두 시스템 클립 보드 데이터를 모니터링하고 해당 내용을 serialize하는 간단한 프로그램 (학습 목적으로 만)을 작성하고 싶습니다. 사용자의 사본이 시스템 클립 보드 (Ctrl-C를 )에 일부 데이터, 내 프로그램은 "통지"를 수신하여 파일로 클립 보드 데이터를 직렬화해야 할 때마다시스템 클립 보드 이벤트에 대한 알림은 어떻게 받습니까?

예를 들어

.

나는 java.awt.datatransfer을 들여다 보았지만 데이터가 클립 보드에 복사 될 때마다 콜백을 시스템 이벤트에 연결할 수있는 방법이없는 것 같습니다.

시스템 클립 보드 이벤트에 대한 알림은 어떻게 받습니까?

솔루션은 Windows에서만 작동하지만 OS 상호 운용성은 물론 장점입니다.

+1

* "시스템 클립 보드 데이터를 모니터링하는 간단한 프로그램 (학습 목적으로 만)을 작성하고 싶습니다."* 본질적으로 의심스럽지 않은 데이터를 가로 채고 자하는 프로그램은 모두 의심 스럽습니다. 그 이유로 나는이 응용 프로그램을 기원합니다. '단순하지 않다'. –

답변

3

FlavorListenerClipboard에 연결하여 시도하면 Clipboard.addFlavorListener으로 전화하십시오.

는 코드 샘플 및 허용 대답을 가지고이 SO 질문을 참조 : Is it possible to be informed when clipboard content changes outside of java

업데이트 : 작동하지 않았다

- camickr가 지적했듯이, 만 불 때 DataFlavor 변경됩니다.

  1. WindowEvent의 듣고 앱이 오면 클립 보드의 내용을 확인 초점 : 당신을위한 두 가지 옵션이 나타납니다. 앱이 백그라운드에서 클립 보드 내용으로 무엇인가를 수행 할 필요가 없다면, 즉 사용자가 클립 보드에 무엇인가로 앱으로 전환해야하는 경우에 적합합니다.

  2. this example에 따라 주기적으로 클립 보드를 폴링하십시오. 당연히 당신은 맥 관련 물건 (그리고 가난한 싱글 톤 구현)을 무시할 것이다. 그러나 아이디어는 동일하다.

+1

이것은 데이터가 클립 보드에 복사 될 때가 아니라 맛 변화를 수신합니다. 예를 들어 3 개의 텍스트가 연속으로 복사되는 경우 클립 보드에 원래 있던 데이터에 따라 마지막 2 개 및 잠재적으로 첫 번째로 통보되지 않습니다. – camickr

+0

그게 제가 생각한 것입니다.하지만 코드 밑의 논의는 그렇지 않다는 것을 나타냅니다. 방금 그 코드를 ... 행운을 빕니다. 지금 좀 더 자세히 살펴 보겠습니다. – Paul

+0

@camickr조차 .. 어떻게 든 내 테스트에서는 작동하지 않습니다. 빈 메모장에는 2 개의 다른 문자 "A"와 "B"가 있습니다. "A"와 Ctrl-C를 강조 표시합니다. 그런 다음 "B"와 Ctrl-C를 강조 표시합니다. 그리고이 사이클을 몇 번 더 반복합니다. 어떻게 든 프로그램은 첫 번째 복사 작업에 대한 알림을 받고 나머지는 무시합니다. – Pacerier