2010-02-19 3 views
9

작은 유틸리티 (.NET, C#)를 작성 중이므로 클립 보드 복사 작업과 클립 보드 붙여 넣기 작업을 모니터링하고 싶습니다.클립 보드 붙여 넣기 알림을 받고 내 데이터를 제공하는 방법?

제 아이디어는 임의의 응용 프로그램에 붙여 넣을 때 제 데이터를 제공하는 것입니다.

복사 작업 모니터링은 clipboard viewer을 사용하여 쉽게 수행 할 수 있습니다. 응용 프로그램의 쿼리 "어떤 형식을 사용할 수 있습니다"로

  • 답변 : 훨씬 더 고급 나에게 보인다

    뭔가는 "클립 보드 붙여 넣기 공급자"를 작성하는 것입니다.

  • 응용 프로그램 붙여 넣기 작업에 데이터를 제공하십시오.

나는 this postingthis posting을 찾았지만 그 중 아무 것도 정말로 도움이되지 않습니다.

내가 추측 한 것은 어떻게 든 현재 클립 보드를 모방하거나 하이재킹해야한다는 것입니다.

질문 :

가 붙여 넣기 작업의 측면에서 클립 보드를 "포장"과 "클립 보드 프록시"내 자신의 종류를 제공 할 수 있습니까?

+1

PS를 : 나는 CodeProject의 당신을 알고) 아이러니 나는이에 대한 CodeProject의로 리디렉션 것을! !! !! : D lol – t0mm13b

답변

11

Windows 후크를 사용하여 클립 보드 후크에 후크해야합니다. Windows 후크는 발생하는 전역 이벤트를 가로 채고 메시지를 대체하거나 가로 챌 프로 시저를 제공하는 방법입니다. 연결 방법을 설명하는 CodeProject을 살펴보십시오. 복사/붙여 넣기 기능을 수신 대기하는 clipboard helper이 있습니다. 여기 그냥 Clipboard spy입니다. 다음은 Clipboard hook을 구현하는 또 다른 기사입니다.

+5

감사합니다, 톰! 가장 좋은 기사 참조는 "Ctrl + V"를 후크하는 사람입니다. 그러나 : 사용자가 마우스 오른쪽 버튼을 클릭하고 상황에 맞는 메뉴 또는 다른 방법으로 "붙여 넣기"를 선택하면 어떻게됩니까? 나는 해결책이 키보드/마우스/무엇이든간에 후크를해서 직접 클립 보드 통신 자체를 가로채는 것이 아니라고 생각한다. –

9

WinAPI에서 "지연 렌더링"을 조사하십시오. 이 기술을 사용하면 null 핸들이있는 클립 보드를로드하고 붙여 넣기하면 Windows에서 WM_RENDERFORMAT 메시지로 사용자에게 알립니다. 이것은 Excel과 같은 앱이 25 가지의 다른 형식을 "복사"하는 방식입니다. 실제로 모든 것을 복사하지는 않습니다. 그것은 실제로 TEXT와 같은 몇 가지 공통적 인 것들을 만들지 만, Bitmap, Html, WKS 등과 같은 다른 것들을 "광고"하며, 대상 응용 프로그램이 붙여 넣기를 원하는 것을보기를 기다립니다.
Excel에서 5000 개의 셀을 선택하여 복사하면 클립 보드가 매우 빠르게 업데이트됩니다. 이제 Windows Paint에 붙여 넣으면 Excel에서 거대한 비트 맵을 렌더링하려고 할 때 갑자기 시스템이 크롤링됩니다. 사용 가능한 모든 메모리를 사용하고 페이지 파일을 먹은 후 이전 버전은 일반적으로 충돌합니다. Windows 3.1에서 다시 돌아 왔습니다. 최신 버전은 "비트 맵이 너무 큽니다"또는 "메모리가 충분하지 않습니다"라는 메시지를 표시합니다. 경고 : 지연 렌더링은 클립 보드를 모니터링하고 원격 데스크톱, VMWare, Office 클립 보드 및 내 자신의 ClipMate와 같은 데이터를 자동으로 붙여 넣는 응용 프로그램에 의해 일찍 트리거됩니다. 일부 클립 보드 모니터링 프로그램은 내가 여기에 문서화 한 CF_Clipboard_Viewer_Ignore 플래그를 사용하여 클립 보드 업데이트를 무시하라고 할 수 있습니다 link text

+0

남자 ...... 놀라운 ... –