您的位置:首页 > 编程语言 > Qt开发

QT调用QQ截屏工具

2013-10-21 18:18 260 查看
今天折腾了一天,开始以为被人误导使用qq2008里面的cameradll.dll动态链接库,本人还卸载了QQ2013下了个qq2008来装上,安装好后使用里面的cameradll.dll。将其考在程序目录下面,和exe文件放在一堆,调用里面的camerasubarea(),始终出错。最后网上查了下,说是缺少依赖库,然后又下了十几个相关的dll文件,拷到响应目录下,尼玛,还是不行。在探索过程中看到网上有专门的cameradll下载,然后自己下了一个下来,放到程序里,OK了。尼玛,又搞了一天!傻逼了。其实只要将下载的cameradll拷贝到system32目录下就OK了。

我是用QT写得按钮点击,然后调用dll里面的函数截屏,然后将截屏文件保存到本地,代码如下:

typedef int (__stdcall *CAMERASUBAREA)(int a);//这个是函数指针,定义为全局


//截图按钮
void jietu::on_btcapture_clicked()
{
hHandle = NULL;
hHandle = LoadLibrary(L"CameraDll.dll");
if (hHandle==NULL)
{
int i = GetLastError();
return;
}
CAMERASUBAREA pCameraSubArea =  (CAMERASUBAREA)GetProcAddress(hHandle,"CameraSubArea");
if (pCameraSubArea == NULL)
{
int i = GetLastError();
return;
}
int i = pCameraSubArea(1);
if (i)//截图成功
{
QString filename = QFileDialog::getSaveFileName(this,
tr("Save Image"),"",tr("*.bmp;;*.png;;*jpg;;*.tif;;*.gif"));
if (!filename.isEmpty())
{
QClipboard* border = QApplication::clipboard();
QImage image = border->image();//获取图像
if (!image.save(filename))//保存
{
QMessageBox::information(this,
tr("Failed to save"),
tr("Faild to save"));
return;
}
}
}
FreeLibrary(hHandle);
}


上面是动态链接库的显示调用,不清楚的朋友可以网上查查dll的显示调用和隐式调用,当然隐式要方便些,不存在什么使用函数指针。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  qt 截图