关于vc用ShellExecute调用Winrar的问题

hohell 2009-07-28 11:35:14
请教高手们一个问题,麻烦了。

可以用下面这条语句压缩C盘下的abc文件夹下的所有文件。
ShellExecute(NULL, "open", "C:\\Program Files\\WinRAR\\WinRAR.exe","a e:\\123.rar", "c:\\abc", SW_HIDE);//可以压缩文件夹的内容


但是如果把"c:\\abc", 改为"c:\\abc\\abc.txt"想压缩abc.txt文件的话,就不能获得成功,就会去压缩C盘根目录下的文件

请问:1、问题出在什么地方呢?
2、可以用什么别的方法调用winrar压缩单个文件吗?
3、CString 类型的变量用.GetFilePath();赋值后的文件路径可以直接用来替换相应的"c:\\abc"吗?
非常感谢。
...全文
286 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
hohell 2009-07-28
  • 打赏
  • 举报
回复
不好意思,浪费网络资源了。
仔细查看了ShellExecute的用法。
原来多参数的了解有误
ShellExecute函数原型及参数含义如下:
  ShellExecute(
  HWND hwnd, //父窗口句柄 (如:NULL,Handle等)
  LPCSTR lpOperation, //操作类型 (如:"open")*要加英文双引号
  LPCSTR lpFile, //要进行操作的文件或路径
  LPCSTR lpParameters, //当lpOperation为“explore”时指定要传递的参数,通常设为NULL
  LPCSTR lpDirectory, //指定默认目录,通常设为NULL
  INT nShowCmd //文件打开的方式,以通常方式还是最大化或最小化显示,一般为SW_SHOWNORMAL
  )
LPCSTR lpDirectory, //指定默认目录,通常设为NULL
是用于指定默认目录的。
我只用设置为NULL
在 LPCSTR lpParameters, //当lpOperation为“explore”时指定要传递的参数,通常设为NULL 中加入相应的文件就好了。再次感谢回复的朋友
Allen_zhang 2009-07-28
  • 打赏
  • 举报
回复
这个问题的关键是你要知道WinRar的命令行参数是怎样定义的
hohell 2009-07-28
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 danxuezx 的回复:]
CreateProcess
[/Quote]
非常感谢你的回复。
请问ShellExecute必须要创建一个新的进程来调用吗?
danxuezx 2009-07-28
  • 打赏
  • 举报
回复
CreateProcess

16,550

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧