Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / whidbey / NetFXspW7 / ndp / fx / src / WinForms / Managed / System / WinForms / Clipboard.cs / 1 / 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
- CrossContextChannel.cs
- ModifierKeysValueSerializer.cs
- StringValueConverter.cs
- HtmlImageAdapter.cs
- SoapExtensionTypeElement.cs
- ProfessionalColorTable.cs
- SQLInt32Storage.cs
- ReflectionPermission.cs
- JsonObjectDataContract.cs
- ComAdminInterfaces.cs
- ManagementQuery.cs
- ClientSettingsProvider.cs
- SQLBinary.cs
- StateMachineSubscription.cs
- EditorAttribute.cs
- LayoutManager.cs
- ComponentResourceManager.cs
- CanonicalFormWriter.cs
- ProxySimple.cs
- TextParagraph.cs
- AppDomainManager.cs
- ApplicationTrust.cs
- Set.cs
- SecurityAccessDeniedException.cs
- InputLanguageEventArgs.cs
- ProgressChangedEventArgs.cs
- TogglePatternIdentifiers.cs
- RestHandlerFactory.cs
- WebPartHeaderCloseVerb.cs
- UniqueIdentifierService.cs
- EnumerableValidator.cs
- RenderData.cs
- AnnouncementDispatcherAsyncResult.cs
- DiscoveryEndpointElement.cs
- ReachDocumentReferenceCollectionSerializer.cs
- XmlBinaryReader.cs
- JumpPath.cs
- SegmentTree.cs
- querybuilder.cs
- DispatcherObject.cs
- PropertyMapper.cs
- ObjectListItemCollection.cs
- SQLConvert.cs
- DecimalAnimation.cs
- UnsafeNativeMethods.cs
- DataServiceQueryOfT.cs
- ServerIdentity.cs
- PassportAuthenticationEventArgs.cs
- ToolStripLabel.cs
- RectValueSerializer.cs
- DataAdapter.cs
- HashJoinQueryOperatorEnumerator.cs
- FilteredDataSetHelper.cs
- GeneralTransformGroup.cs
- LinkedResourceCollection.cs
- initElementDictionary.cs
- RegisteredHiddenField.cs
- SolidBrush.cs
- StrongNameKeyPair.cs
- DataMemberAttribute.cs
- UIServiceHelper.cs
- Logging.cs
- PointAnimationClockResource.cs
- ProviderConnectionPoint.cs
- DBConcurrencyException.cs
- NonVisualControlAttribute.cs
- DataGridViewBindingCompleteEventArgs.cs
- Message.cs
- TextContainer.cs
- AutoResizedEvent.cs
- DataSourceSelectArguments.cs
- FormViewInsertEventArgs.cs
- HtmlElementEventArgs.cs
- XPathException.cs
- brushes.cs
- TextTreeText.cs
- HotSpot.cs
- SmtpException.cs
- XmlSchemaGroupRef.cs
- PointF.cs
- EventLogger.cs
- ProfileInfo.cs
- OleDbRowUpdatedEvent.cs
- PlaceHolder.cs
- Rect3D.cs
- SequenceNumber.cs
- ClientUrlResolverWrapper.cs
- TemplateBamlTreeBuilder.cs
- XNodeSchemaApplier.cs
- NamespaceList.cs
- EditorOptionAttribute.cs
- ControlPaint.cs
- ApplicationInterop.cs
- StrongNameKeyPair.cs
- RegistryKey.cs
- StringConcat.cs
- AttributeUsageAttribute.cs
- SessionIDManager.cs
- SqlServer2KCompatibilityCheck.cs
- ListViewItemEventArgs.cs