본문 바로가기

Silverlight

ClipBoard 에 복사하는 방법

개요

퍼가기 같은곳에 보면 클립보드에 복사하기가 있는데요. 고놈의 소스입니다.

소스내용

Internet Explorer-only Clipboard Access

  • using System;  
  • using System.Windows.Browser;  
  • namespace ClipboardDemo  
  • {  
  • public static class Clipboard  
  •     {  
  • const string HostNoClipboard = "The clipboard isn't available in the current host.";  
  • const string ClipboardFailure = "The text couldn't be copied into the clipboard.";  
  • /// <summary>
  • /// Write to the clipboard (Internet Explorer-only)
  • /// </summary>
  • public static void SetText(string text)  
  •         {  
  • // document.window.clipboardData.setData(format, data);
  •             var clipboardData = (ScriptObject)HtmlPage.Window.GetProperty("clipboardData");  
  • if (clipboardData != null) {  
  • bool success = (bool)clipboardData.Invoke("setData", "text", text);  
  • if (!success) {  
  •                     HtmlPage.Window.Alert(ClipboardFailure);  
  •                 }  
  •             }  
  • else {  
  •                 HtmlPage.Window.Alert(HostNoClipboard);  
  •             }  
  •         }  
  •     }  
  • }

    Cross-browser, cross-platform solution

  • using System;  
  • using System.Windows.Browser;  
  • namespace ClipboardDemo  
  • {  
  • public static class Clipboard  
  •     {  
  • const string HostNoClipboard = "The clipboard isn't available in the current host.";  
  • const string ClipboardFailure = "The text couldn't be copied into the clipboard.";  
  • const string BeforeFlashCopy = "The text will now attempt to be copied...";  
  • const string FlashMimeType = "application/x-shockwave-flash";  
  • // HARD-CODED!
  • const string ClipboardFlashMovie = "clipboard.swf";  
  • /// <summary>
  • /// Write to the clipboard (IE and/or Flash)
  • /// </summary>
  • public static void SetText(string text)  
  •         {  
  • // document.window.clipboardData.setData(format, data);
  •             var clipboardData = (ScriptObject)HtmlPage.Window.GetProperty("clipboardData");  
  • if (clipboardData != null) {  
  • bool success = (bool)clipboardData.Invoke("setData", "text", text);  
  • if (!success) {  
  •                     HtmlPage.Window.Alert(ClipboardFailure);  
  •                 }  
  •             }  
  • else {  
  •                 HtmlPage.Window.Alert(BeforeFlashCopy);  
  • // Append a Flash embed element with the data encoded
  • string safeText = HttpUtility.UrlEncode(text);  
  •                 var elem = HtmlPage.Document.CreateElement("div");  
  •                 HtmlPage.Document.Body.AppendChild(elem);  
  •                 elem.SetProperty("innerHTML", "<embed src=\"" +  
  •                     ClipboardFlashMovie + "\" " +  
  • "FlashVars=\"clipboard=" + safeText + "\" width=\"0\" " +  
  • "height=\"0\" type=\"" + FlashMimeType + "\"></embed>");  
  •             }  
  •         }  
  •     }  
  • }

    원본 주소 : http://www.jeff.wilcox.name/2008/05/clipboard-access/


    IE 에서는 자바스크립트로 클립보드에 복사가 되는데 다른것들에서는 안된다고 하네요 그래서 플래쉬를 이용해서 사용 한다고 하네요. 바로 위에서 사용된 플래쉬 파일을 첨부하겠습니다.

    플래쉬 파일