VC调用ShellExecute压缩文件的实现
2012-09-06 16:19
302 查看
在对话框中,添加了一个压缩按钮,想一键将数据直接压缩到U盘中。
首先要先确定U盘是否插入,这里系统只有一个C盘,所以U盘插入的时候自动是D盘了:
HANDLE hFile = CreateFile("\\\\.\\D:",
GENERIC_READ|GENERIC_WRITE,
FILE_SHARE_READ|FILE_SHARE_WRITE|FILE_SHARE_DELETE,
NULL,
OPEN_EXISTING,
0,
NULL);//检测U盘
if(hFile==INVALID_HANDLE_VALUE)
{
MessageBox("请插入U盘");
return;
}
CloseHandle(hFile);
其次在U盘中创建一个文件夹,将数据压缩到这个文件夹中:
CreateDirectoryA("D:\\dataq",NULL);//这个不带黑屏显示
当dataq文件夹存在时,此函数返回NULL,不存在时则创建,无论存不存在都能压缩,所以我也就没判断文件夹是否存在。刚开始用的是CreateFile来检测文件夹dataq是否存在,可是不对,它只创建了一个dataq的文件,而不是文件夹,所以后来就不用了,如下:
HANDLE hFile1 = CreateFile("\\\\.\\D:\\dataq",
GENERIC_READ|GENERIC_WRITE,
FILE_SHARE_READ|FILE_SHARE_WRITE|FILE_SHARE_DELETE,
NULL,
OPEN_ALWAYS,
0,
NULL);//检测U盘
之后要开始压缩了,我用的是ShellExecute语句,感觉这个比较简单
HANDLE pEt=ShellExecute(NULL,"open","D:\\Program Files\\WinRAR\\WinRAR.exe","a -as -r D:\\dataq\\data3.rar","C:\\data3",SW_HIDE); //SW_SHOW
WaitForSingleObject(pEt,INFINITE);
注意:a -as -r 这几个参数,a好像代表增加目录,as是同步压缩,就是当文件存在时可以替换掉里面的内容,-r是包括data3里的子目录,如果想压缩后删除data3里面的内容,可以在-r后面加上一句-df就行了,要加个空格,即 a -as -r -df,具体命令可以自己查一下。
这是软件里的一个小功能,小弟刚学,如果哪里不对,请大家多多指教,期间得到了vc驿站和CSDN网友的帮助,在此表示十分感谢!
首先要先确定U盘是否插入,这里系统只有一个C盘,所以U盘插入的时候自动是D盘了:
HANDLE hFile = CreateFile("\\\\.\\D:",
GENERIC_READ|GENERIC_WRITE,
FILE_SHARE_READ|FILE_SHARE_WRITE|FILE_SHARE_DELETE,
NULL,
OPEN_EXISTING,
0,
NULL);//检测U盘
if(hFile==INVALID_HANDLE_VALUE)
{
MessageBox("请插入U盘");
return;
}
CloseHandle(hFile);
其次在U盘中创建一个文件夹,将数据压缩到这个文件夹中:
CreateDirectoryA("D:\\dataq",NULL);//这个不带黑屏显示
当dataq文件夹存在时,此函数返回NULL,不存在时则创建,无论存不存在都能压缩,所以我也就没判断文件夹是否存在。刚开始用的是CreateFile来检测文件夹dataq是否存在,可是不对,它只创建了一个dataq的文件,而不是文件夹,所以后来就不用了,如下:
HANDLE hFile1 = CreateFile("\\\\.\\D:\\dataq",
GENERIC_READ|GENERIC_WRITE,
FILE_SHARE_READ|FILE_SHARE_WRITE|FILE_SHARE_DELETE,
NULL,
OPEN_ALWAYS,
0,
NULL);//检测U盘
之后要开始压缩了,我用的是ShellExecute语句,感觉这个比较简单
HANDLE pEt=ShellExecute(NULL,"open","D:\\Program Files\\WinRAR\\WinRAR.exe","a -as -r D:\\dataq\\data3.rar","C:\\data3",SW_HIDE); //SW_SHOW
WaitForSingleObject(pEt,INFINITE);
注意:a -as -r 这几个参数,a好像代表增加目录,as是同步压缩,就是当文件存在时可以替换掉里面的内容,-r是包括data3里的子目录,如果想压缩后删除data3里面的内容,可以在-r后面加上一句-df就行了,要加个空格,即 a -as -r -df,具体命令可以自己查一下。
这是软件里的一个小功能,小弟刚学,如果哪里不对,请大家多多指教,期间得到了vc驿站和CSDN网友的帮助,在此表示十分感谢!
相关文章推荐
- C#使用SharpZipLib压缩和解压文件3/3调用实现压缩和解压
- Java 中调用 Apache API 实现图片文件的 压缩 与 解压 实例
- VC调用WinRAR压缩文件
- C#调用Winrar实现文件压缩
- 利用VC调用WinRAR解压和压缩文件
- 利用VC调用WinRAR解压和压缩文件
- VC++实现CAB压缩解压文件
- VC++ 调用7z.exe 命令行参数实现简单的压缩、解压
- Java实现文件压缩与解压[zip格式,gzip格式]
- Linux实现对rar压缩文件的解压
- PHP调用Linux的命令行执行文件压缩命令
- php实现批量压缩图片文件大小的脚本
- 关于封装的可执行短信发送文件调用完成实现短信触发发送
- html中用js调用ASP文件 实现静态页面动态显示
- 用java代码实现文件的zip压缩与解压
- 在java中实现zip压缩文件的具体实现
- c#调用7z压缩和解压缩文件
- .NET2.0 Base Class Library 系列(二)实现压缩文件
- 用ASP.Net实现文件的在线压缩和解压缩