数据复制专用代码:监听剪切板并处理剪切板内容后放到剪切板

最近做报表经常要根据日志文件统计数据,再把数据填入到excel。

日志形如:

缴费总笔数                   12
缴费用户数                   123
缴费金额数                1234.1
缴费50元以上笔数              321
缴费50元以上用户数            342
缴费50元以上金额         11.75
缴费100元以上笔数              42


其中的文字和排列顺序都是excel中既定的,需要单独把数据复制进去。每次都单独一个数据复制非常麻烦,就考虑一次复制所有文本,然后剪切板里自动去掉文字剩下数字,粘贴到excel表中就正好合适。


例如复制日志数据,程序处理后,剪切板中就是如下数据,只需要打开程序开启监听就可以。

 12
 123
 1234.1
 321
 342
 11.75
 42                       


关键函数如下


void ChangeContent(char* str)
{
	char * line = (char*)malloc(50);
	char * newstr = (char*)malloc(sizeof(str));
	int i=0,len=0;
	int length = strlen(str);
	bool find=false;

	ZeroMemory(newstr,sizeof(newstr));
	if (str != NULL && strcmp(str,"")!=0)
	{
		while (len<length)
		{
			find = false;
			ZeroMemory(line,sizeof(line));
			for (;*str!='\n' && len<length;str++)
			{
				//提取一行数字 i代表数字的长度
				if (*str == ' ' && *(str+1)!=' ') 
				{
					line=str;
					i=-1;
					find = true;
				}
				if (find) i++;
				len++;
			}
			*(line+i+2)='\0';
			lstrcat(newstr,line);
			if (find) str+=i;
			if (i == 0) len++; else len+=i;
			//ZeroMemory(str,sizeof(str));
		}
	}

	OpenClipboard(NULL);
	EmptyClipboard();
	HGLOBAL hMen;
	 hMen = GlobalAlloc(GMEM_MOVEABLE, ((strlen(newstr)+1)*sizeof(TCHAR)));    
	 LPSTR lpStr = (LPSTR)GlobalLock(hMen);    
	strcpy(lpStr,newstr);
	 // 释放锁    
	 GlobalUnlock(hMen);  
	 // 把内存中的数据放到剪切板上   
	 SetClipboardData(CF_TEXT, hMen); 
	 change = true;
	 CloseClipboard();
}


可执行文件待会儿也传一个

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yyqfyyqf

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值