在剪切板中使用自定义格式的数据
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);
}
}
}
在剪切板中使用自定义格式的数据相关推荐
- 如何获取windows剪切板中内容
一个简单的获取windows剪切板中文本内容的代码 // 获取剪切板中的内容public static String getClipboardText() {Clipboard clip = Tool ...
- Winform中实现将照片剪贴到系统剪切板中(附代码下载)
场景 效果 点击剪切按钮 点击粘贴按钮 注: 博客主页: https://blog.csdn.net/badao_liumang_qizhi 关注公众号 霸道的程序猿 获取编程相关电子书.教程推送与免 ...
- WPF学习笔记(7):DataGrid中数字自定义格式显示
WPF学习笔记(7):DataGrid中数字自定义格式显示 原文:WPF学习笔记(7):DataGrid中数字自定义格式显示 DataGrid中数据显示如下图,数据格式比较杂乱.希望达到以下要求:(1 ...
- 在浏览器中实现复制内容到剪切板中
前言 前端开发时, 经常有这种功能, 需要把网页中的有些内容复制到剪切板中. 针对IE浏览器来说, 实现起来就很简单, 因为直接有clipboardData 的对象可以使用, 但是对于其他浏览器来说, ...
- 将剪切板中的图片粘贴至Word,浮动于文字上方,设置图片背景透明
Sub Macro1() '将剪切板中的图片粘贴至Word Selection.Paste '执行循环 For i = 1 To ActiveDocument. ...
- C#实现WinForm下DataGridView控件从剪切板中进行内容粘贴
DataGridView是C#中在处理显示表格数据时常用的控件,但是在使用过程中,会发现复制DataGridView控件中的内容比较容易,而把剪切板中拷贝的内容黏贴到DataGridView控件中比较 ...
- 在python中使用json格式存储数据
在python中使用json格式存储数据 代码如下: import jsonlist1 = [{'A': [1, 2, 3, 4, 5, 6], 'B': [3, 4, 5, 6, 7]},{'C': ...
- 关于Excel中的自定义格式
excel单元格自定义格式1 代码结构组成代码码分为四个部分,中间用":"号分隔,具体如下: 正数格式:负数格式:零格式:文本格式 各个参数的涵义 "G/通用格式&quo ...
- 【vim】系统剪切板、vim寄存器之间的复制粘贴操作命令?系统剪切板中的内容复制粘贴到命令行?vim文本中复制粘贴到命令行
一.系统剪切板和文本内容的复制粘贴 1.1 从系统剪切板复制粘贴到文本中 需要操作3次: 分别是英文双引号.一个加号或梅花号,最后是一个p 也即"+p 或者直接使用组合键[Shift + i ...
最新文章
- 在Ubuntu 14.04 64bit中永久添加DNS的方法
- Error: Could not find or load main class CLASS的解决方法
- 脚本可以放在html外,关于把script脚本放在html结束标签外的运行结果???
- 微博平台StatusNet研究(4):快速安装
- jupyter kernel_如何在Jupyter笔记本中运行Scala和Spark
- wrapper php,PHP流Streams、包装器wrapper概念与用法实例详解
- 机器视觉:药液质量检测
- jmx为啥开了额外两个随机端口?
- 盘点那些年我们一起玩过的网络安全工具
- 解决Python爬取百度页面出现中文乱码问题
- 马斯克、李彦宏、姚期智等云端纵论AI,他们都说了什么?
- 1 Yocto 项目分析和跟踪手册
- Linux shell实现阶乘
- WPF ListBox等ItemsControl交替(Alternation)变化效果
- amfori BSCI行为守则(2021)最新版-2023年生效
- Arduino Cloud 现已支持乐鑫 ESP32-S2、S3 和 C3
- 2021-06-16 STM32F103 EXTI 中断识别 使用固件库
- WordPress安装论坛插件
- 计算机PPT必会,计算机常用工具软件完整PPT课件
- 32位uefi引导64位Linux,维护版win8pe(32位+64位+纯64位,支持BIOS+EFI)