void TestManualFormatClipboard()
{
//自定义数据结构体
typedef struct _MYSTRUCT
{
CHAR charVal[16];
int iVal;
long lVal;
double fVal;
}MYSTRUCT, *LPMYSTRUCT;
MYSTRUCT wrStruct = {"ABCD", 0, 1, 2.0};
MYSTRUCT rdStruct = {"DCBA", 0, 2, 4.0};
DWORD dwError = 0;
UINT uFormat = 0;
//注册自定义格式
if(dwError == 0)
{
uFormat = RegisterClipboardFormat(_T("TestManulaFormat"));
if(uFormat == 0)//注册格式失败
{
dwError = GetLastError();
TRACE(_T("RegisterClipboardFormat Error (%ld)\n"), dwError);
}
}
//将数据写入剪切板
if(dwError == 0)
{
if(OpenClipboard(NULL))//打开剪切板
{
if(EmptyClipboard())//清空剪切板
{
DWORD dwSize = sizeof(wrStruct);
HGLOBAL hMem = GlobalAlloc(GMEM_MOVEABLE | GMEM_DDESHARE, dwSize); //分配内存
if(hMem)//分配内存有效
{
memcpy(GlobalLock(hMem), &wrStruct, dwSize);//拷贝数据
GlobalUnlock(hMem);//解锁
if(SetClipboardData(uFormat, hMem) == NULL) //数据写入剪切板
{
dwError = GetLastError();
TRACE(_T("SetClipboardData Error for write(%ld)\n"), dwError);
}
}
else //分配内存出错
{
dwError = GetLastError();
TRACE(_T("GlobalAlloc Error for write(%ld)\n"), dwError);
}
}
else //清空剪切板失败
{
dwError = GetLastError();
TRACE(_T("EmptyClipboard Error for write(%ld)\n"), dwError);
}
if(!CloseClipboard())//关闭剪切板
{
dwError = GetLastError();
TRACE(_T("CloseClipboard Error for write(%ld)\n"), dwError);
}
}
else//打开剪切板失败
{
dwError = GetLastError();
TRACE(_T("OpenClipboard Error for write(%ld)\n"), dwError);
}
}
//从剪切板读出数据
if(dwError == 0)
{
if(OpenClipboard(NULL)) //打开剪切板
{
if(IsClipboardFormatAvailable(uFormat))//检查格式有效
{
HGLOBAL hMem = GetClipboardData(uFormat);//读取数据句柄
if(hMem != NULL)
{
memcpy(&rdStruct, GlobalLock(hMem), sizeof(rdStruct));//读出数据
GlobalUnlock(hMem);//解锁
}
else//读取句柄失败
{
dwError = GetLastError();
TRACE(_T("GetClipboardData Error for read (%ld)\n"), dwError);
}
}
else//格式无效
{
dwError = GetLastError();
TRACE(_T("IsClipboardFormatAvailable Error for read (%ld)\n"), dwError);
}
if(!CloseClipboard())//关闭剪切板
{
dwError = GetLastError();
TRACE(_T("CloseClipboard Error for read (%ld)\n"), dwError);
}
}
else //打开剪切板失败
{
dwError = GetLastError();
TRACE(_T("OpenClipboard Error for read (%ld)\n"), dwError);
}
}
//比较数据
if(dwError == 0)
{
if(memcmp(&wrStruct, &rdStruct, sizeof(wrStruct))==0)//相等
{
}
else
{
TRACE(_T("failed to compare data!\n"));
ASSERT(FALSE);
}
}
}

在剪切板中使用自定义格式的数据相关推荐

  1. 如何获取windows剪切板中内容

    一个简单的获取windows剪切板中文本内容的代码 // 获取剪切板中的内容public static String getClipboardText() {Clipboard clip = Tool ...

  2. Winform中实现将照片剪贴到系统剪切板中(附代码下载)

    场景 效果 点击剪切按钮 点击粘贴按钮 注: 博客主页: https://blog.csdn.net/badao_liumang_qizhi 关注公众号 霸道的程序猿 获取编程相关电子书.教程推送与免 ...

  3. WPF学习笔记(7):DataGrid中数字自定义格式显示

    WPF学习笔记(7):DataGrid中数字自定义格式显示 原文:WPF学习笔记(7):DataGrid中数字自定义格式显示 DataGrid中数据显示如下图,数据格式比较杂乱.希望达到以下要求:(1 ...

  4. 在浏览器中实现复制内容到剪切板中

    前言 前端开发时, 经常有这种功能, 需要把网页中的有些内容复制到剪切板中. 针对IE浏览器来说, 实现起来就很简单, 因为直接有clipboardData 的对象可以使用, 但是对于其他浏览器来说, ...

  5. 将剪切板中的图片粘贴至Word,浮动于文字上方,设置图片背景透明

    Sub Macro1()      '将剪切板中的图片粘贴至Word      Selection.Paste      '执行循环      For i = 1 To ActiveDocument. ...

  6. C#实现WinForm下DataGridView控件从剪切板中进行内容粘贴

    DataGridView是C#中在处理显示表格数据时常用的控件,但是在使用过程中,会发现复制DataGridView控件中的内容比较容易,而把剪切板中拷贝的内容黏贴到DataGridView控件中比较 ...

  7. 在python中使用json格式存储数据

    在python中使用json格式存储数据 代码如下: import jsonlist1 = [{'A': [1, 2, 3, 4, 5, 6], 'B': [3, 4, 5, 6, 7]},{'C': ...

  8. 关于Excel中的自定义格式

    excel单元格自定义格式1 代码结构组成代码码分为四个部分,中间用":"号分隔,具体如下: 正数格式:负数格式:零格式:文本格式 各个参数的涵义 "G/通用格式&quo ...

  9. 【vim】系统剪切板、vim寄存器之间的复制粘贴操作命令?系统剪切板中的内容复制粘贴到命令行?vim文本中复制粘贴到命令行

    一.系统剪切板和文本内容的复制粘贴 1.1 从系统剪切板复制粘贴到文本中 需要操作3次: 分别是英文双引号.一个加号或梅花号,最后是一个p 也即"+p 或者直接使用组合键[Shift + i ...

最新文章

  1. 在Ubuntu 14.04 64bit中永久添加DNS的方法
  2. Error: Could not find or load main class CLASS的解决方法
  3. 脚本可以放在html外,关于把script脚本放在html结束标签外的运行结果???
  4. 微博平台StatusNet研究(4):快速安装
  5. jupyter kernel_如何在Jupyter笔记本中运行Scala和Spark
  6. wrapper php,PHP流Streams、包装器wrapper概念与用法实例详解
  7. 机器视觉:药液质量检测
  8. jmx为啥开了额外两个随机端口?
  9. 盘点那些年我们一起玩过的网络安全工具
  10. 解决Python爬取百度页面出现中文乱码问题
  11. 马斯克、李彦宏、姚期智等云端纵论AI,他们都说了什么?
  12. 1 Yocto 项目分析和跟踪手册
  13. Linux shell实现阶乘
  14. WPF ListBox等ItemsControl交替(Alternation)变化效果
  15. amfori BSCI行为守则(2021)最新版-2023年生效
  16. Arduino Cloud 现已支持乐鑫 ESP32-S2、S3 和 C3
  17. 2021-06-16 STM32F103 EXTI 中断识别 使用固件库
  18. WordPress安装论坛插件
  19. 计算机PPT必会,计算机常用工具软件完整PPT课件
  20. 32位uefi引导64位Linux,维护版win8pe(32位+64位+纯64位,支持BIOS+EFI)

热门文章

  1. RESTful API 规范
  2. 软件测试缺陷等级划分_游戏测试中缺陷等级分类
  3. 智能电话机器人,使用Microsoft语音识别技术(Speech sdk)
  4. 关于战略策划的一点认识
  5. 宽带错误代码619原因及解决方法
  6. python在家创业项目_适合在家里做的互联网创业虚拟项目
  7. 如何巧用大数据分析工具快速实现模型灰度发布
  8. amd可以python_python amd64什么意思
  9. 抽象数据类型Triplet的表示与实现
  10. 同济大学计算机学院陈震,苗夺谦