C++读写剪切板

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/Simon798/article/details/102398596

读剪切板

// 成功返回剪切板内容,失败返回 "error"。
char* getClipBoardValue(){
	// 初始化
	char *url,*pData;
	size_t length;

	// 打开剪切板
	if(!OpenClipboard(NULL)){return "error";}

	// 获取剪切板内的数据
	HANDLE hData=GetClipboardData(CF_TEXT);
	assert(hData!=NULL);

	// 获取数据长度
	length=GlobalSize(hData);
	url=(char*)malloc(length+1);

	// 将数据转换为字符
	pData=(char*)GlobalLock(hData);
	strcpy_s(url, length,pData); 

	// 一系列善后工作
	GlobalUnlock(hData);
	CloseClipboard();
	url[length]=0;
	
	return url;
}

写剪切板

// 成功返回 true,失败返回 false。
bool setClipBoardValue(string details){
	// 打开剪切板
	if(!OpenClipboard(NULL)){return false;}

	// 清空剪切板数据
	EmptyClipboard();

	// 从堆中分配字节
	HGLOBAL hmem = GlobalAlloc(GHND,sizeof(details));

	// 锁定全局内存对象
	LPVOID pmem = GlobalLock(hmem);

	// 拷贝内存
	memcpy(pmem,stringToCharP(details),sizeof(details));

	// 写入剪切板
	SetClipboardData(CF_TEXT,hmem);

	// 关闭剪切板
	CloseClipboard();

	// 释放全局对象句柄
	GlobalFree(hmem); 

	return true;
}

效果图:(如下我复制了右侧窗口中的文本)
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/Simon798/article/details/102398596