一.背景
当剪切板上有大量信息时,如果我们“鼠标一滑”或者“手一抖”,来了个“粘贴”,轻者粘贴到它不应该去的地方,重者使我们的机子顿时卡住,这两种情况我都深有体会。于是这个程序便出现了。放在桌面上,没事的时候就点一点。只有清空剪切板的话比较简陋,于是就再加了个清空回收站,但是这个功能可能对于某些人来说便成了“画蛇添足”。
二.函数介绍
1. 有关剪切板
OpenClipboard:如果要使用剪切板,首先就要调用这个函数获取其句柄。
EmptyClipboard:顾名思义,这个就是清空剪切板的函数了。
CloseClipboard:使用完剪切板一定要关闭它,好让“别人”使用它。
2. 有关回收站
SHQueryRecycleBin:查询回收站中的信息。为了程序的健壮性,我们有必要先查询一下回收站的情况,再依情况进行处理。
SHEmptyRecycleBin:也可以顾名思义。
SHQUERYRBINFO:这是SHQueryRecycleBin所需要的一个参数类型。
其成员参考MSDN:
cbSize:The size of thestructure, in bytes. This member must be filled in prior to calling thefunction.
i64Size:The total size ofall the objects in the specified Recycle Bin, in bytes.
i64NumItems:The total number ofitems in the specified Recycle Bin.
三.代码展示
#include <Windows.h>
#include <iostream>
int main()
{
if(!OpenClipboard(NULL))//使其和当前程序关联
return0;
std::cout<<"正在清空剪切板。。。"<<std::endl;
EmptyClipboard();
CloseClipboard();
std::cout<<"清空剪切板完成。。。"<<std::endl;
std::cout<<"正在清空回收站。。。"<<std::endl;
SHQUERYRBINFOrbinfo;
memset(&rbinfo,0,sizeof(SHQUERYRBINFO));
rbinfo.cbSize=sizeof(rbinfo);
if(S_OK!=SHQueryRecycleBin(NULL,&rbinfo))//查询所有驱动器
{
std::cout<<"清空回收站失败。。。"<<std::endl;
return0;
}
if(rbinfo.i64NumItems==0)
{
std::cout<<"回收站无垃圾。。。"<<std::endl;
return1;
}
if(S_OK!=SHEmptyRecycleBin(NULL,NULL,0))//清空所有
{
std::cout<<"清空回收站失败。。。"<<std::endl;
return0;
}
std::cout<<"清空回收站完成。。。"<<std::endl;
return1;
}
四.显示
