빠른 시작: 클립보드 기본 사항(HTML)

[ 이 문서는 Windows 런타임 앱을 작성하는 Windows에서 8.x 및 Windows Phone 8.x 개발자를 대상으로 합니다. Windows 10용으로 개발하는 경우에는 최신 설명서를 참조하세요.]

사용자에게 최대한 많은 데이터 제어 기능을 제공할수록 좋은 앱입니다. 사용자가 원하는 한 가지 제어 방법으로는 클립보드 작업이 있습니다. 클립보드 작업을 사용하여 데이터를 잘라내고, 복사하고, 붙여 넣을 수 있습니다. 클립보드 작업은 동일한 앱 내에서 또는 동일한 컴퓨터의 다른 두 앱 간에 수행할 수 있습니다. 클립보드를 사용하면 필요한 정보를 원하는 장소에 쉽게 저장할 수 있습니다.

여러 가지 데이터 공유 방법

앱에 클립보드 작업을 추가하는 방법을 알아보기 전에 먼저 Windows 8에서 데이터를 이동하는 여러 가지 방법을 지원한다는 것을 기억해야 합니다. 이러한 방법에 대한 간략한 설명은 데이터 공유 및 교환을 참조하세요. 이러한 방법 중 하나인 공유는 클립보드와 많은 공통점이 있습니다. 개발자의 관점에서 공유 작업과 클립보드 작업은 모두 동일한 Windows 네임스페이스인 Windows.ApplicationModel.DataTransfer를 사용합니다. 또한 개발자 앱에서 사용자가 선택하는 데이터를 수집해야 합니다. DataPackage 클래스를 사용하여 데이터를 수집하므로 이를 패키징이라고도 합니다. 사용자의 관점에서 클립보드는 데이터를 주위로 이동하는 "기본" 방법을 말합니다.

개발자는 공유 작업과 클립보드 작업이 매우 비슷하지만 중요한 차이점이 있다는 사실을 기억하세요. 공유에서는 대상 즉, 사용자가 선택하는 앱 또는 서비스에 초점이 있습니다. 클립보드에서는 데이터에 초점이 있습니다. 또한 데스크톱 앱과 Windows 스토어 앱 사이의 데이터 교환은 클립보드 작업을 통해서만 가능합니다.

공유 작업과 클립보드 작업의 차이점에 대한 자세한 내용은 데이터 공유 및 교환을 참조하세요.

기본 제공 클립보드 지원

대부분의 경우 클립보드 작업을 지원하기 위해 별도의 코드를 작성할 필요가 없습니다. Windows 스토어 앱을 만드는 데 사용할 수 있는 대부분의 컨트롤은 클립보드 작업을 이미 지원합니다. 사용할 수 있는 컨트롤에 대한 자세한 내용은 컨트롤 및 콘텐츠 추가를 참조하세요.

시작하기 전에

앱에 클립보드 작업 지원을 추가하는 것은 매우 간단합니다. 먼저 클립보드 명령에 대한 지침 및 검사 목록을 살펴보세요. 이 항목에서는 클립보드 작업을 위한 최적의 사용자 환경을 만드는 데 유용한 많은 정보와 코드를 최대한 활용할 수 있도록 도와 주는 몇 가지 고려 사항에 대해 설명합니다.

그런 다음 지원한 데이터 형식의 유형을 고려해야 합니다. Windows 8에는 표준 형식과 사용자 지정 형식의 두 가지 범주가 있습니다. 표준 형식은 다음과 같습니다.

  • Text
  • HTML
  • URI
  • 비트맵
  • StorageItems
  • RTF

이러한 데이터 형식을 사용하는 클립보드 작업 예제는 코드 예제(영문)를 참조하세요. 앱에서 지원되는 형식 유형을 지정하는 방법은 StandardDataFormats 참조 항목을 참조하세요.

이름이 암시하듯이 사용자 지정 데이터 형식은 표준 형식 중 어느 하나에도 적합하지 않은 데이터 형식을 말합니다. 이러한 형식이 주소, 이벤트 등과 같은 논리적 데이터 모음을 나타내는 경우도 있습니다. 사용자 지정 형식을 지원하려면 http://schema.org/docs/full.htm에 지정된 다양한 스키마 중 하나를 사용하는 것이 좋습니다. 이러한 스키마처럼 일반적으로 알려진 데이터 형식을 사용하면 클립보드 데이터를 수신하는 앱이 데이터로 수행할 작업에 대해 알게 됩니다.

시작하기

클립보드 작업 지원은 일반적으로 복사(또는 잘라내기)와 붙여넣기의 두 부분으로 구성됩니다. 먼저 복사 및 잘라내기 작업을 처리하는 방법에 대해 알아 보겠습니다. 앱에 적절한 참조가 있는지 확인합니다. Microsoft Visual Studio 템플릿을 사용 중인 경우에는 새 프로젝트를 만들면 참조가 바로 추가됩니다. Visual Studio를 사용하지 않는 경우에는 앱에 Windows.ApplicationModel.DataTransfer 네임스페이스에 대한 액세스 권한이 있어야 합니다.

프로젝트를 설정한 후 DataPackage 개체의 인스턴스가 필요합니다. 이 개체에는 사용자가 복사하려는 데이터와 포함할 속성(예: 설명)이 모두 포함되어 있습니다.

var dataPackage = new Windows.ApplicationModel.DataTransfer.DataPackage();

복사 및 잘라내기

이제 수행할 클립보드 작업을 지정할 준비가 되었습니다. 클립보드 작업은 DataPackageOperation 열거형을 사용하여 수행할 수 있습니다. 복사 작업을 위해 수행할 작업은 다음과 같습니다.

var dataPackage = new Windows.ApplicationModel.DataTransfer.DataPackage();
dataPackage.requestedOperation = Windows.ApplicationModel.DataTransfer.DataPackageOperation.copy;

또한 잘라내기 작업(이동 작업이라고도 함)을 위해 수행할 작업은 다음과 같습니다.

var dataPackage = new Windows.ApplicationModel.DataTransfer.DataPackage();
dataPackage.requestedOperation = Windows.ApplicationModel.DataTransfer.DataPackageOperation.move;

이제 사용자가 선택한 데이터를 DataPackage 개체에 추가할 수 있습니다. DataPackage 클래스에서 이 데이터를 지원하는 경우 DataPackage 개체에서 해당 방법 중 하나를 사용할 수 있습니다.

텍스트를 추가하려면

dataPackage.setText("Hello World!");

DataPackage에 다른 형식을 추가하는 방법의 예제를 보려면 코드 갤러리클립보드 샘플(영문)을 참조하세요. DataPackage에 형식을 여러 개 추가할 수 있습니다.

마지막으로 클립보드에 DataPackage를 추가해야 합니다. 이 작업을 수행하려면 정적 Clipboard.setContent 메서드를 호출합니다.

Windows.ApplicationModel.DataTransfer.Clipboard.setContent(dataPackage);

붙여넣기

클립보드 내용을 가져오려면 정적 Clipboard.getContent 메서드를 호출합니다. 이 메서드는 콘텐츠를 포함하는 DataPackageView를 반환합니다. 이 개체는 콘텐츠가 읽기 전용이라는 점만 제외하고 DataPackage 개체와 거의 동일합니다. 이 개체에서 AvailableFormats 또는 contains 메서드를 사용하여 사용 가능한 형식을 식별할 수 있습니다. 그런 다음 해당 DataPackageView 메서드를 호출하여 데이터를 가져올 수 있습니다. 예를 들어 클립보드에 저장된 텍스트를 가져오는 방법은 다음과 같습니다.

var dataPackageView = Windows.ApplicationModel.DataTransfer.Clipboard.getContent();
if (dataPackageView.contains(Windows.ApplicationModel.DataTransfer.StandardDataFormats.text)) {
    dataPackageView.getTextAsync().then(function (text) {
        // To output the text from this example, you need an HTML element
        // with an id of "output".
        document.getElementById("output").innerText = "Clipboard now contains: " + text;
    });
}

클립보드 변경 내용 추적

복사 및 붙여넣기 명령 이외에 클립보드 내용이 변경되면 앱에서 알 수 있도록 이벤트 처리기를 추가하면 유용합니다. 이 작업을 수행하려면 클립보드의 ContentChanged 이벤트를 처리합니다.

Windows.ApplicationModel.DataTransfer.Clipboard.addEventListener("contentchanged", function (event) {
    var dataPackageView = Windows.ApplicationModel.DataTransfer.Clipboard.getContent();
    if (dataPackageView.contains(Windows.ApplicationModel.DataTransfer.StandardDataFormats.text)) {
        dataPackageView.getTextAsync().then(function (text) {
            // To output the text from this example, you need an HTML element
            // with an id of "output".
            document.getElementById("output").innerText = "Clipboard now contains: " + text;
        });
    }
});

이 처리기를 추가한 상태에서 클립보드의 내용이 변경되면 앱에서 알 수 있습니다.

다음 단계

이제는 앱에 클립보드 지원을 추가하는 기본적인 방법을 알아야 합니다. 최적의 사용자 환경을 만들 수 있도록 클립보드 명령에 대한 지침 및 검사 목록을 참조하세요. 클립보드를 사용하는 방법에 대한 다양한 예제는 코드 갤러리샘플 다운로드(영문)를 참조하세요.

관련 항목

빠른 시작: 클립보드 기본 사항

클립보드 명령에 대한 지침 및 검사 목록

DataPackage

Windows.ApplicationModel.DataTransfer

클립보드 샘플 앱