C# clipboard类封装了对剪贴板的操作,一般使用没有问题。但由于clipboard封装的数据类型有限,对于一些自定义类型的剪贴板数据,如果想占用剪贴板并在使用后原样恢复剪贴板的数据就会产生问题。试验了很多方法后,尝试学习别人C++的思路。使用winapi来处理剪贴本解决问题。
using System;
using System.Runtime.InteropServices;
using System.Collections.Generic;
namespace 学习
{
class MyClip
{
[DllImport("user32.dll", CharSet = CharSet.Auto)]
static public extern IntPtr SetClipboardData(uint Format, IntPtr hData);
[DllImport("user32.dll", SetLastError = true)]
static extern uint EnumClipboardFormats(uint format); //枚举剪贴板内数据类型
[DllImport("user32.dll", SetLastError = true)]
private static extern Int32 OpenClipboard(IntPtr hWndNewOwner);
[DllImport("user32.dll", SetLastError = true)]
private static extern IntPtr GetClipboardData(uint uFormat);
[DllImport("user32.dll", SetLastError = true)]
private static extern Int32 CloseClipboard();
[DllImport("kernel32.dll", SetLastError = true)]
private static extern Int32 GlobalLock(IntPtr hMem);
[DllImport("kernel32.dll", SetLastError = true)]
private static extern Int32 GlobalUnlock(IntPtr hMem);
[DllImport("kernel32.dll")]
&nb

本文介绍了在C#中如何利用clipboard类处理剪贴板操作的问题,特别是针对自定义类型数据。当需要占用剪贴板并确保在使用后能原样恢复原有内容时,通过学习C++的思路,采用WinAPI来实现这一功能。
最低0.47元/天 解锁文章
1240

被折叠的 条评论
为什么被折叠?



