Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / WinForms / Managed / System / WinForms / Clipboard.cs / 1305376 / Clipboard.cs
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//-----------------------------------------------------------------------------
/*
*/
namespace System.Windows.Forms {
using System;
using System.Collections.Specialized;
using System.ComponentModel;
using System.Diagnostics;
using System.Drawing;
using System.IO;
using System.Runtime.InteropServices;
using System.Runtime.InteropServices.ComTypes;
using System.Security;
using IComDataObject = System.Runtime.InteropServices.ComTypes.IDataObject;
using System.Globalization;
using System.Security.Permissions;
using System.Collections;
///
///
/// Provides methods to place data on and retrieve data from the system clipboard. This class cannot be inherited.
///
public sealed class Clipboard {
// not creatable...
//
private Clipboard() {
}
//
// Checks the validity of format while setting data into ClipBoard
//
private static bool IsFormatValid(DataObject data)
{
string[] formats = data.GetFormats();
Debug.Assert(formats != null, "Null returned from GetFormats");
if (formats != null)
{
if (formats.Length <= 4)
{
for (int i=0; i
///
/// Places nonpersistent data on the system .
///
public static void SetDataObject(object data) {
SetDataObject(data, false);
}
///
///
/// Overload that uses default values for retryTimes and retryDelay.
///
public static void SetDataObject(object data, bool copy) {
SetDataObject(data, copy, 10 /*retryTimes*/, 100 /*retryDelay*/);
}
///
///
/// Places data on the system and uses copy to specify whether the data
/// should remain on the
/// after the application exits.
///
[UIPermission(SecurityAction.Demand, Clipboard=UIPermissionClipboard.OwnClipboard)]
public static void SetDataObject(object data, bool copy, int retryTimes, int retryDelay) {
if (Application.OleRequired() != System.Threading.ApartmentState.STA) {
throw new System.Threading.ThreadStateException(SR.GetString(SR.ThreadMustBeSTA));
}
if (data == null) {
throw new ArgumentNullException("data");
}
if (retryTimes < 0) {
throw new ArgumentOutOfRangeException("retryTimes", SR.GetString(SR.InvalidLowBoundArgumentEx, "retryTimes", retryTimes.ToString(CultureInfo.CurrentCulture), (0).ToString(CultureInfo.CurrentCulture)));
}
if (retryDelay < 0) {
throw new ArgumentOutOfRangeException("retryDelay", SR.GetString(SR.InvalidLowBoundArgumentEx, "retryDelay", retryDelay.ToString(CultureInfo.CurrentCulture), (0).ToString(CultureInfo.CurrentCulture)));
}
DataObject dataObject = null;
if (!(data is IComDataObject)) {
dataObject = new DataObject(data);
}
bool restrictedFormats = false;
// If the caller doesnt have AllClipBoard permission then we allow only restricted formats.
// These formats are TEXT, UNICODETEXT,String and CSV
try
{
IntSecurity.ClipboardRead.Demand();
}
catch (SecurityException)
{
// We dont have allClipBoard so we can set only data in the following formats
// TEXT, UNICODETEXT, and CSV.
restrictedFormats = true;
}
// Compute the format of the "data" passed in iff setText == true;
if (restrictedFormats)
{
if (dataObject == null)
{
dataObject = data as DataObject;
}
if (!IsFormatValid(dataObject))
{
throw new SecurityException(SR.GetString(SR.ClipboardSecurityException));
}
}
int hr, retry = retryTimes;
IntSecurity.UnmanagedCode.Assert();
try
{
do {
if (data is IComDataObject) {
hr = UnsafeNativeMethods.OleSetClipboard((IComDataObject)data);
}
else {
hr = UnsafeNativeMethods.OleSetClipboard(dataObject);
}
if (hr != 0) {
if (retry == 0) {
ThrowIfFailed(hr);
}
retry--;
System.Threading.Thread.Sleep(retryDelay /*ms*/);
}
}
while (hr != 0);
if (copy) {
retry = retryTimes;
do {
hr = UnsafeNativeMethods.OleFlushClipboard();
if (hr != 0) {
if (retry == 0) {
ThrowIfFailed(hr);
}
retry--;
System.Threading.Thread.Sleep(retryDelay /*ms*/);
}
}
while (hr != 0);
}
}
finally
{
CodeAccessPermission.RevertAssert();
}
}
///
///
/// Retrieves the data that is currently on the system
/// .
///
public static IDataObject GetDataObject() {
Debug.WriteLineIf(IntSecurity.SecurityDemand.TraceVerbose, "ClipboardRead Demanded");
IntSecurity.ClipboardRead.Demand();
if (Application.OleRequired() != System.Threading.ApartmentState.STA) {
// only throw if a message loop was started. This makes the case of trying
// to query the clipboard from your finalizer or non-ui MTA thread
// silently fail, instead of making your app die.
//
// however, if you are trying to write a normal windows forms app and
// forget to set the STAThread attribute, we will correctly report
// an error to aid in debugging.
//
if (Application.MessageLoop) {
throw new System.Threading.ThreadStateException(SR.GetString(SR.ThreadMustBeSTA));
}
else {
return null;
}
}
// Vswhidbey :: 476911. We need to retry the GetDataObject() since the clipBaord is busy sometimes and hence the GetDataObject would fail with ClipBoardException.
return GetDataObject(10 /*retryTimes*/, 100 /*retryDelay*/);
}
// Private method to help accessing clipBoard for know retries before failing.
private static IDataObject GetDataObject(int retryTimes, int retryDelay)
{
IComDataObject dataObject = null;
int hr, retry = retryTimes;
do {
hr = UnsafeNativeMethods.OleGetClipboard(ref dataObject);
if (hr != 0) {
if (retry == 0) {
ThrowIfFailed(hr);
}
retry--;
System.Threading.Thread.Sleep(retryDelay /*ms*/);
}
}
while (hr != 0);
if (dataObject != null) {
if (dataObject is IDataObject && !Marshal.IsComObject(dataObject)) {
return (IDataObject)dataObject;
}
else {
return new DataObject(dataObject);
}
}
return null;
}
// <-- WHIDBEY ADDITIONS
///
///
/// [To be supplied.]
///
public static void Clear() {
Clipboard.SetDataObject(new DataObject());
}
///
///
/// [To be supplied.]
///
public static bool ContainsAudio() {
IDataObject dataObject = Clipboard.GetDataObject();
if (dataObject != null) {
return dataObject.GetDataPresent(DataFormats.WaveAudio, false);
}
return false;
}
///
///
/// [To be supplied.]
///
public static bool ContainsData(string format) {
IDataObject dataObject = Clipboard.GetDataObject();
if (dataObject != null) {
return dataObject.GetDataPresent(format, false);
}
return false;
}
///
///
/// [To be supplied.]
///
public static bool ContainsFileDropList() {
IDataObject dataObject = Clipboard.GetDataObject();
if (dataObject != null) {
return dataObject.GetDataPresent(DataFormats.FileDrop, true);
}
return false;
}
///
///
/// [To be supplied.]
///
public static bool ContainsImage() {
IDataObject dataObject = Clipboard.GetDataObject();
if (dataObject != null) {
return dataObject.GetDataPresent(DataFormats.Bitmap, true);
}
return false;
}
///
///
/// [To be supplied.]
///
public static bool ContainsText() {
if (Environment.OSVersion.Platform != System.PlatformID.Win32NT ||
Environment.OSVersion.Version.Major < 5)
{
return ContainsText(TextDataFormat.Text);
}
else {
return ContainsText(TextDataFormat.UnicodeText);
}
}
///
///
/// [To be supplied.]
///
public static bool ContainsText(TextDataFormat format) {
// valid values are 0x0-0x4 inclusive
if (!ClientUtils.IsEnumValid(format, (int)format, (int)TextDataFormat.Text, (int)TextDataFormat.CommaSeparatedValue)){
throw new InvalidEnumArgumentException("format", (int)format, typeof(TextDataFormat));
}
IDataObject dataObject = Clipboard.GetDataObject();
if (dataObject != null) {
return dataObject.GetDataPresent(ConvertToDataFormats(format), false);
}
return false;
}
///
///
/// [To be supplied.]
///
public static Stream GetAudioStream() {
IDataObject dataObject = Clipboard.GetDataObject();
if (dataObject != null) {
return dataObject.GetData(DataFormats.WaveAudio, false) as Stream;
}
return null;
}
///
///
/// [To be supplied.]
///
public static object GetData(string format) {
IDataObject dataObject = Clipboard.GetDataObject();
if (dataObject != null) {
return dataObject.GetData(format);
}
return null;
}
///
///
/// [To be supplied.]
///
public static StringCollection GetFileDropList() {
IDataObject dataObject = Clipboard.GetDataObject();
StringCollection retVal = new StringCollection();
if (dataObject != null) {
string[] strings = dataObject.GetData(DataFormats.FileDrop, true) as string[];
if (strings != null) {
retVal.AddRange(strings);
}
}
return retVal;
}
///
///
/// [To be supplied.]
///
public static Image GetImage() {
IDataObject dataObject = Clipboard.GetDataObject();
if (dataObject != null) {
return dataObject.GetData(DataFormats.Bitmap, true) as Image;
}
return null;
}
///
///
/// [To be supplied.]
///
public static string GetText() {
// Pass in Text format for Win98...
if (Environment.OSVersion.Platform != System.PlatformID.Win32NT ||
Environment.OSVersion.Version.Major < 5)
{
return GetText(TextDataFormat.Text);
}
else {
return GetText(TextDataFormat.UnicodeText);
}
}
///
///
/// [To be supplied.]
///
public static string GetText(TextDataFormat format) {
// valid values are 0x0 to 0x4 inclusive
if (!ClientUtils.IsEnumValid(format, (int)format, (int)TextDataFormat.Text, (int)TextDataFormat.CommaSeparatedValue))
{
throw new InvalidEnumArgumentException("format", (int)format, typeof(TextDataFormat));
}
IDataObject dataObject = Clipboard.GetDataObject();
if (dataObject != null) {
string text = dataObject.GetData(ConvertToDataFormats(format), false) as string;
if (text != null) {
return text;
}
}
return String.Empty;
}
///
///
/// [To be supplied.]
///
public static void SetAudio(byte[] audioBytes) {
if (audioBytes == null) {
throw new ArgumentNullException("audioBytes");
}
SetAudio(new MemoryStream(audioBytes));
}
///
///
/// [To be supplied.]
///
public static void SetAudio(Stream audioStream) {
if (audioStream == null) {
throw new ArgumentNullException("audioStream");
}
IDataObject dataObject = new DataObject();
dataObject.SetData(DataFormats.WaveAudio, false, audioStream);
Clipboard.SetDataObject(dataObject, true);
}
///
///
/// [To be supplied.]
///
public static void SetData(string format, object data) {
//Note: We delegate argument checking to IDataObject.SetData, if it wants to do so.
IDataObject dataObject = new DataObject();
dataObject.SetData(format, data);
Clipboard.SetDataObject(dataObject, true);
}
///
///
/// [To be supplied.]
///
public static void SetFileDropList(StringCollection filePaths) {
if (filePaths == null) {
throw new ArgumentNullException("filePaths");
}
// VsWhidbey:432618 throw Argument exception for zero-length filepath collection.
if (filePaths.Count == 0)
{
throw new ArgumentException(SR.GetString(SR.CollectionEmptyException));
}
//VSWhidbey #163538 - Validate the paths to make sure they don't contain invalid characters
foreach (string path in filePaths) {
try {
string temp = Path.GetFullPath(path);
}
catch (Exception e) {
if (ClientUtils.IsSecurityOrCriticalException(e)) {
throw;
}
throw new ArgumentException(SR.GetString(SR.Clipboard_InvalidPath, path, "filePaths"), e);
}
}
if (filePaths.Count > 0) {
IDataObject dataObject = new DataObject();
string[] strings = new string[filePaths.Count];
filePaths.CopyTo(strings, 0);
dataObject.SetData(DataFormats.FileDrop, true, strings);
Clipboard.SetDataObject(dataObject, true);
}
}
///
///
/// [To be supplied.]
///
public static void SetImage(Image image) {
if (image == null) {
throw new ArgumentNullException("image");
}
IDataObject dataObject = new DataObject();
dataObject.SetData(DataFormats.Bitmap, true, image);
Clipboard.SetDataObject(dataObject, true);
}
///
///
/// [To be supplied.]
///
public static void SetText(string text) {
// Pass in Text format for Win98...
if (Environment.OSVersion.Platform != System.PlatformID.Win32NT ||
Environment.OSVersion.Version.Major < 5)
{
SetText(text, TextDataFormat.Text);
}
else {
SetText(text, TextDataFormat.UnicodeText);
}
}
///
///
/// [To be supplied.]
///
public static void SetText(string text, TextDataFormat format) {
if (String.IsNullOrEmpty(text)) {
throw new ArgumentNullException("text");
}
//valid values are 0x0 to 0x4
if (!ClientUtils.IsEnumValid(format, (int)format, (int)TextDataFormat.Text, (int)TextDataFormat.CommaSeparatedValue))
{
throw new InvalidEnumArgumentException("format", (int)format, typeof(TextDataFormat));
}
IDataObject dataObject = new DataObject();
dataObject.SetData(ConvertToDataFormats(format), false, text);
Clipboard.SetDataObject(dataObject, true);
}
private static string ConvertToDataFormats(TextDataFormat format) {
switch (format) {
case TextDataFormat.Text:
return DataFormats.Text;
case TextDataFormat.UnicodeText:
return DataFormats.UnicodeText;
case TextDataFormat.Rtf:
return DataFormats.Rtf;
case TextDataFormat.Html:
return DataFormats.Html;
case TextDataFormat.CommaSeparatedValue:
return DataFormats.CommaSeparatedValue;
}
return DataFormats.UnicodeText;
}
// END - WHIDBEY ADDITIONS -->
private static void ThrowIfFailed(int hr) {
//
if (hr != 0) {
ExternalException e = new ExternalException(SR.GetString(SR.ClipboardOperationFailed), hr);
throw e;
}
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//-----------------------------------------------------------------------------
/*
*/
namespace System.Windows.Forms {
using System;
using System.Collections.Specialized;
using System.ComponentModel;
using System.Diagnostics;
using System.Drawing;
using System.IO;
using System.Runtime.InteropServices;
using System.Runtime.InteropServices.ComTypes;
using System.Security;
using IComDataObject = System.Runtime.InteropServices.ComTypes.IDataObject;
using System.Globalization;
using System.Security.Permissions;
using System.Collections;
///
///
/// Provides methods to place data on and retrieve data from the system clipboard. This class cannot be inherited.
///
public sealed class Clipboard {
// not creatable...
//
private Clipboard() {
}
//
// Checks the validity of format while setting data into ClipBoard
//
private static bool IsFormatValid(DataObject data)
{
string[] formats = data.GetFormats();
Debug.Assert(formats != null, "Null returned from GetFormats");
if (formats != null)
{
if (formats.Length <= 4)
{
for (int i=0; i
///
/// Places nonpersistent data on the system .
///
public static void SetDataObject(object data) {
SetDataObject(data, false);
}
///
///
/// Overload that uses default values for retryTimes and retryDelay.
///
public static void SetDataObject(object data, bool copy) {
SetDataObject(data, copy, 10 /*retryTimes*/, 100 /*retryDelay*/);
}
///
///
/// Places data on the system and uses copy to specify whether the data
/// should remain on the
/// after the application exits.
///
[UIPermission(SecurityAction.Demand, Clipboard=UIPermissionClipboard.OwnClipboard)]
public static void SetDataObject(object data, bool copy, int retryTimes, int retryDelay) {
if (Application.OleRequired() != System.Threading.ApartmentState.STA) {
throw new System.Threading.ThreadStateException(SR.GetString(SR.ThreadMustBeSTA));
}
if (data == null) {
throw new ArgumentNullException("data");
}
if (retryTimes < 0) {
throw new ArgumentOutOfRangeException("retryTimes", SR.GetString(SR.InvalidLowBoundArgumentEx, "retryTimes", retryTimes.ToString(CultureInfo.CurrentCulture), (0).ToString(CultureInfo.CurrentCulture)));
}
if (retryDelay < 0) {
throw new ArgumentOutOfRangeException("retryDelay", SR.GetString(SR.InvalidLowBoundArgumentEx, "retryDelay", retryDelay.ToString(CultureInfo.CurrentCulture), (0).ToString(CultureInfo.CurrentCulture)));
}
DataObject dataObject = null;
if (!(data is IComDataObject)) {
dataObject = new DataObject(data);
}
bool restrictedFormats = false;
// If the caller doesnt have AllClipBoard permission then we allow only restricted formats.
// These formats are TEXT, UNICODETEXT,String and CSV
try
{
IntSecurity.ClipboardRead.Demand();
}
catch (SecurityException)
{
// We dont have allClipBoard so we can set only data in the following formats
// TEXT, UNICODETEXT, and CSV.
restrictedFormats = true;
}
// Compute the format of the "data" passed in iff setText == true;
if (restrictedFormats)
{
if (dataObject == null)
{
dataObject = data as DataObject;
}
if (!IsFormatValid(dataObject))
{
throw new SecurityException(SR.GetString(SR.ClipboardSecurityException));
}
}
int hr, retry = retryTimes;
IntSecurity.UnmanagedCode.Assert();
try
{
do {
if (data is IComDataObject) {
hr = UnsafeNativeMethods.OleSetClipboard((IComDataObject)data);
}
else {
hr = UnsafeNativeMethods.OleSetClipboard(dataObject);
}
if (hr != 0) {
if (retry == 0) {
ThrowIfFailed(hr);
}
retry--;
System.Threading.Thread.Sleep(retryDelay /*ms*/);
}
}
while (hr != 0);
if (copy) {
retry = retryTimes;
do {
hr = UnsafeNativeMethods.OleFlushClipboard();
if (hr != 0) {
if (retry == 0) {
ThrowIfFailed(hr);
}
retry--;
System.Threading.Thread.Sleep(retryDelay /*ms*/);
}
}
while (hr != 0);
}
}
finally
{
CodeAccessPermission.RevertAssert();
}
}
///
///
/// Retrieves the data that is currently on the system
/// .
///
public static IDataObject GetDataObject() {
Debug.WriteLineIf(IntSecurity.SecurityDemand.TraceVerbose, "ClipboardRead Demanded");
IntSecurity.ClipboardRead.Demand();
if (Application.OleRequired() != System.Threading.ApartmentState.STA) {
// only throw if a message loop was started. This makes the case of trying
// to query the clipboard from your finalizer or non-ui MTA thread
// silently fail, instead of making your app die.
//
// however, if you are trying to write a normal windows forms app and
// forget to set the STAThread attribute, we will correctly report
// an error to aid in debugging.
//
if (Application.MessageLoop) {
throw new System.Threading.ThreadStateException(SR.GetString(SR.ThreadMustBeSTA));
}
else {
return null;
}
}
// Vswhidbey :: 476911. We need to retry the GetDataObject() since the clipBaord is busy sometimes and hence the GetDataObject would fail with ClipBoardException.
return GetDataObject(10 /*retryTimes*/, 100 /*retryDelay*/);
}
// Private method to help accessing clipBoard for know retries before failing.
private static IDataObject GetDataObject(int retryTimes, int retryDelay)
{
IComDataObject dataObject = null;
int hr, retry = retryTimes;
do {
hr = UnsafeNativeMethods.OleGetClipboard(ref dataObject);
if (hr != 0) {
if (retry == 0) {
ThrowIfFailed(hr);
}
retry--;
System.Threading.Thread.Sleep(retryDelay /*ms*/);
}
}
while (hr != 0);
if (dataObject != null) {
if (dataObject is IDataObject && !Marshal.IsComObject(dataObject)) {
return (IDataObject)dataObject;
}
else {
return new DataObject(dataObject);
}
}
return null;
}
// <-- WHIDBEY ADDITIONS
///
///
/// [To be supplied.]
///
public static void Clear() {
Clipboard.SetDataObject(new DataObject());
}
///
///
/// [To be supplied.]
///
public static bool ContainsAudio() {
IDataObject dataObject = Clipboard.GetDataObject();
if (dataObject != null) {
return dataObject.GetDataPresent(DataFormats.WaveAudio, false);
}
return false;
}
///
///
/// [To be supplied.]
///
public static bool ContainsData(string format) {
IDataObject dataObject = Clipboard.GetDataObject();
if (dataObject != null) {
return dataObject.GetDataPresent(format, false);
}
return false;
}
///
///
/// [To be supplied.]
///
public static bool ContainsFileDropList() {
IDataObject dataObject = Clipboard.GetDataObject();
if (dataObject != null) {
return dataObject.GetDataPresent(DataFormats.FileDrop, true);
}
return false;
}
///
///
/// [To be supplied.]
///
public static bool ContainsImage() {
IDataObject dataObject = Clipboard.GetDataObject();
if (dataObject != null) {
return dataObject.GetDataPresent(DataFormats.Bitmap, true);
}
return false;
}
///
///
/// [To be supplied.]
///
public static bool ContainsText() {
if (Environment.OSVersion.Platform != System.PlatformID.Win32NT ||
Environment.OSVersion.Version.Major < 5)
{
return ContainsText(TextDataFormat.Text);
}
else {
return ContainsText(TextDataFormat.UnicodeText);
}
}
///
///
/// [To be supplied.]
///
public static bool ContainsText(TextDataFormat format) {
// valid values are 0x0-0x4 inclusive
if (!ClientUtils.IsEnumValid(format, (int)format, (int)TextDataFormat.Text, (int)TextDataFormat.CommaSeparatedValue)){
throw new InvalidEnumArgumentException("format", (int)format, typeof(TextDataFormat));
}
IDataObject dataObject = Clipboard.GetDataObject();
if (dataObject != null) {
return dataObject.GetDataPresent(ConvertToDataFormats(format), false);
}
return false;
}
///
///
/// [To be supplied.]
///
public static Stream GetAudioStream() {
IDataObject dataObject = Clipboard.GetDataObject();
if (dataObject != null) {
return dataObject.GetData(DataFormats.WaveAudio, false) as Stream;
}
return null;
}
///
///
/// [To be supplied.]
///
public static object GetData(string format) {
IDataObject dataObject = Clipboard.GetDataObject();
if (dataObject != null) {
return dataObject.GetData(format);
}
return null;
}
///
///
/// [To be supplied.]
///
public static StringCollection GetFileDropList() {
IDataObject dataObject = Clipboard.GetDataObject();
StringCollection retVal = new StringCollection();
if (dataObject != null) {
string[] strings = dataObject.GetData(DataFormats.FileDrop, true) as string[];
if (strings != null) {
retVal.AddRange(strings);
}
}
return retVal;
}
///
///
/// [To be supplied.]
///
public static Image GetImage() {
IDataObject dataObject = Clipboard.GetDataObject();
if (dataObject != null) {
return dataObject.GetData(DataFormats.Bitmap, true) as Image;
}
return null;
}
///
///
/// [To be supplied.]
///
public static string GetText() {
// Pass in Text format for Win98...
if (Environment.OSVersion.Platform != System.PlatformID.Win32NT ||
Environment.OSVersion.Version.Major < 5)
{
return GetText(TextDataFormat.Text);
}
else {
return GetText(TextDataFormat.UnicodeText);
}
}
///
///
/// [To be supplied.]
///
public static string GetText(TextDataFormat format) {
// valid values are 0x0 to 0x4 inclusive
if (!ClientUtils.IsEnumValid(format, (int)format, (int)TextDataFormat.Text, (int)TextDataFormat.CommaSeparatedValue))
{
throw new InvalidEnumArgumentException("format", (int)format, typeof(TextDataFormat));
}
IDataObject dataObject = Clipboard.GetDataObject();
if (dataObject != null) {
string text = dataObject.GetData(ConvertToDataFormats(format), false) as string;
if (text != null) {
return text;
}
}
return String.Empty;
}
///
///
/// [To be supplied.]
///
public static void SetAudio(byte[] audioBytes) {
if (audioBytes == null) {
throw new ArgumentNullException("audioBytes");
}
SetAudio(new MemoryStream(audioBytes));
}
///
///
/// [To be supplied.]
///
public static void SetAudio(Stream audioStream) {
if (audioStream == null) {
throw new ArgumentNullException("audioStream");
}
IDataObject dataObject = new DataObject();
dataObject.SetData(DataFormats.WaveAudio, false, audioStream);
Clipboard.SetDataObject(dataObject, true);
}
///
///
/// [To be supplied.]
///
public static void SetData(string format, object data) {
//Note: We delegate argument checking to IDataObject.SetData, if it wants to do so.
IDataObject dataObject = new DataObject();
dataObject.SetData(format, data);
Clipboard.SetDataObject(dataObject, true);
}
///
///
/// [To be supplied.]
///
public static void SetFileDropList(StringCollection filePaths) {
if (filePaths == null) {
throw new ArgumentNullException("filePaths");
}
// VsWhidbey:432618 throw Argument exception for zero-length filepath collection.
if (filePaths.Count == 0)
{
throw new ArgumentException(SR.GetString(SR.CollectionEmptyException));
}
//VSWhidbey #163538 - Validate the paths to make sure they don't contain invalid characters
foreach (string path in filePaths) {
try {
string temp = Path.GetFullPath(path);
}
catch (Exception e) {
if (ClientUtils.IsSecurityOrCriticalException(e)) {
throw;
}
throw new ArgumentException(SR.GetString(SR.Clipboard_InvalidPath, path, "filePaths"), e);
}
}
if (filePaths.Count > 0) {
IDataObject dataObject = new DataObject();
string[] strings = new string[filePaths.Count];
filePaths.CopyTo(strings, 0);
dataObject.SetData(DataFormats.FileDrop, true, strings);
Clipboard.SetDataObject(dataObject, true);
}
}
///
///
/// [To be supplied.]
///
public static void SetImage(Image image) {
if (image == null) {
throw new ArgumentNullException("image");
}
IDataObject dataObject = new DataObject();
dataObject.SetData(DataFormats.Bitmap, true, image);
Clipboard.SetDataObject(dataObject, true);
}
///
///
/// [To be supplied.]
///
public static void SetText(string text) {
// Pass in Text format for Win98...
if (Environment.OSVersion.Platform != System.PlatformID.Win32NT ||
Environment.OSVersion.Version.Major < 5)
{
SetText(text, TextDataFormat.Text);
}
else {
SetText(text, TextDataFormat.UnicodeText);
}
}
///
///
/// [To be supplied.]
///
public static void SetText(string text, TextDataFormat format) {
if (String.IsNullOrEmpty(text)) {
throw new ArgumentNullException("text");
}
//valid values are 0x0 to 0x4
if (!ClientUtils.IsEnumValid(format, (int)format, (int)TextDataFormat.Text, (int)TextDataFormat.CommaSeparatedValue))
{
throw new InvalidEnumArgumentException("format", (int)format, typeof(TextDataFormat));
}
IDataObject dataObject = new DataObject();
dataObject.SetData(ConvertToDataFormats(format), false, text);
Clipboard.SetDataObject(dataObject, true);
}
private static string ConvertToDataFormats(TextDataFormat format) {
switch (format) {
case TextDataFormat.Text:
return DataFormats.Text;
case TextDataFormat.UnicodeText:
return DataFormats.UnicodeText;
case TextDataFormat.Rtf:
return DataFormats.Rtf;
case TextDataFormat.Html:
return DataFormats.Html;
case TextDataFormat.CommaSeparatedValue:
return DataFormats.CommaSeparatedValue;
}
return DataFormats.UnicodeText;
}
// END - WHIDBEY ADDITIONS -->
private static void ThrowIfFailed(int hr) {
//
if (hr != 0) {
ExternalException e = new ExternalException(SR.GetString(SR.ClipboardOperationFailed), hr);
throw e;
}
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- WebEventCodes.cs
- StateMachineSubscriptionManager.cs
- Quaternion.cs
- SerializationSectionGroup.cs
- BuildProvider.cs
- ControlPager.cs
- Range.cs
- safesecurityhelperavalon.cs
- MembershipAdapter.cs
- ThreadStateException.cs
- HttpProcessUtility.cs
- XmlSchemaAnnotated.cs
- DataSourceExpressionCollection.cs
- HttpRequest.cs
- TextParaLineResult.cs
- PolicyManager.cs
- RequestCacheEntry.cs
- MergeEnumerator.cs
- RSACryptoServiceProvider.cs
- ResponseStream.cs
- XmlSchemaComplexType.cs
- SamlDoNotCacheCondition.cs
- ObjectFactoryCodeDomTreeGenerator.cs
- XPathBinder.cs
- sqlstateclientmanager.cs
- PackagePartCollection.cs
- TextElementEnumerator.cs
- Imaging.cs
- Int32Converter.cs
- SqlNotificationEventArgs.cs
- FilteredAttributeCollection.cs
- RemoteX509Token.cs
- RuntimeResourceSet.cs
- XmlNamespaceDeclarationsAttribute.cs
- QilDataSource.cs
- SqlDataSource.cs
- DataGridViewTextBoxEditingControl.cs
- entityreference_tresulttype.cs
- ExpressionPrinter.cs
- AutoResetEvent.cs
- EditingCommands.cs
- SafeNativeMethods.cs
- SafeHandles.cs
- DataGridItemEventArgs.cs
- TextBoxAutoCompleteSourceConverter.cs
- WindowCollection.cs
- ProfileParameter.cs
- RuleSetDialog.Designer.cs
- HtmlInputSubmit.cs
- XmlSchemaValidationException.cs
- SafeCryptoHandles.cs
- XmlNamespaceMappingCollection.cs
- WebControlsSection.cs
- SchemaObjectWriter.cs
- TypeDescriptionProvider.cs
- BufferModesCollection.cs
- X509SecurityTokenAuthenticator.cs
- ColorInterpolationModeValidation.cs
- OpCodes.cs
- HttpProfileGroupBase.cs
- PointAnimation.cs
- DescendantQuery.cs
- SqlGatherProducedAliases.cs
- VirtualizingStackPanel.cs
- SpStreamWrapper.cs
- OpCellTreeNode.cs
- InsufficientMemoryException.cs
- ResXBuildProvider.cs
- TypeDescriptionProvider.cs
- ProcessHostServerConfig.cs
- ComponentDispatcher.cs
- ServiceContractViewControl.Designer.cs
- DesignTimeTemplateParser.cs
- GridViewSortEventArgs.cs
- MemberPath.cs
- WebPartConnectionsDisconnectVerb.cs
- ListChangedEventArgs.cs
- SqlDataReaderSmi.cs
- BitmapCacheBrush.cs
- CleanUpVirtualizedItemEventArgs.cs
- WebPartVerbCollection.cs
- OdbcRowUpdatingEvent.cs
- PagerSettings.cs
- CodeSubDirectory.cs
- SystemIcmpV4Statistics.cs
- GrammarBuilderWildcard.cs
- PngBitmapDecoder.cs
- DataRelationPropertyDescriptor.cs
- UserControlCodeDomTreeGenerator.cs
- ImageEditor.cs
- Stream.cs
- FormDocumentDesigner.cs
- SoapReflector.cs
- ValueHandle.cs
- HtmlInputButton.cs
- SqlParameter.cs
- WebScriptMetadataMessageEncoderFactory.cs
- UiaCoreTypesApi.cs
- MachinePropertyVariants.cs
- FrameworkElement.cs