2011-11-17 2 views
4

Windows 시스템 내부를 학습하고 작동하는 방식에 관심이 있습니다. 나는 창문에서 시스템 프로그래밍을 배워야한다. 그 문맥으로, 나는 어떻게 창 내부 클립 보드 기능에 대한 몇 가지를 알고 궁금 :Windows 클립 보드 내부 정보를 알고 싶습니다.

  • 우리는 텍스트, 이미지 등을 선택하고 Ctrl + C를 누르면 정확히 어떻게됩니까?
  • 다른 응용 프로그램에서 Ctrl + V를 누를 때 정확하게 발생합니다.
  • 정확하게 복사 된 데이터는 어디에 있습니까? 복사 된 데이터가 모든 프로세스에서 공유되는 커널 모드 메모리로 이동합니까?
  • 복사 된 데이터를 다른 프로세스에서 어떻게 사용할 수 있습니까?

시스템 프로그래머의 관점에서 위의 질문에 대한 답을 알고 싶습니다.

또한 Windows 클립 보드 내부에 대해 설명하는 모든 리소스를 공유하십시오.

+3

여기에서 Microsoft의 설명을 시작하십시오. http://msdn.microsoft.com/en-us/library/windows/desktop/ms648709.aspx –

+0

@MarkRansom, 불행하게도 doc는 복사 된 메모리의 메모리 관리에 대해서는 아무 것도 말하지 않습니다. 간단한 예제 - 소스 애플리케이션을 닫은 후에 (GlobalAlloc을 통해 할당 된) 객체가 저장되는 위치 – LmTinyToon

답변

2

내 사이트에 좋은 자료가 있습니다. http://www.clipboardextender.com 클립 보드 뷰어 구현, 일반적인 실수,해야 할 것과하지 말아야 할 것에 대해 이야기합니다.

기본적으로 클립 보드는 사용자가 Ctrl + C를 눌러 데이터를 복사하고 (예 : "붙여 넣기") 데이터를 복사하는 공유 메모리 영역입니다. 데이터는 수십 개의 공통 형식과 프로그래머가 정의한 여러 형식으로 동시에 표현 될 수 있습니다.

다른 프로그램에 영향을주지 않고 클립 보드를 완전히 "백업"하고 복원 할 수 없으며 부정적인 사용자 경험을 유발할 수 있습니다. 이유를 알아 보려면 "지연 렌더링"을 조사하고 Excel 사용자가 스프레드 시트에서 5000 행 x 255 열을 복사하고 Ctrl + V를 누르면 어떻게 될지 고려하십시오. 그것을 이해하면 지연 렌더링의 마술 (그리고 함정)을 이해할 수 있습니다.