VC实现解压 隐藏解压窗口

来源:互联网 发布:厦门大学吴春明知乎 编辑:程序博客网 时间:2024/06/05 23:03

当前路径解压命令:

ShellExecute(NULL,"open","WinRAR.exe","e abc.rar","abc.txt",SW_HIDE);

绝对路径:

ShellExecute(NULL,"open","WinRAR.exe","x C:\abc.rar","C:\abc.txt",SW_HIDE);


压缩命令:后面的参数一定要写上,否则压缩的就是那个文件夹所有的了C:\678.txt


ShellExecute(NULL,"open","WinRAR.exe","a -as -r C:\\abc.rar","C:\\abc.txt",SW_HIDE); 


递归压缩vudroid2目录下全部文件为 2M 大小分卷自解压文件(自解压文件就是压缩文件中已经包含了解压缩的工具,无需用户自己安装解压缩工具) vudroid2.part1.sfx,vudroid2.part2.rar,vudroid2.part3.rar 等,将命令a换成命令m可将文件压缩后删除

rar a -r -v2000 -sfx vudroid2.rar vudroid2

使用密码 zaba 压缩contact1.rar文件

rar a -pzaba contact1.rar contact.dat

-------------------------------------------

VC实现解压到当前目录,有cmd窗口和解压窗口

CString sCommandLine1,sCommandLine2;
char cWindowsDirectory[MAX_PATH];
char cCommandLine[MAX_PATH];
DWORD dwExitCode;
PROCESS_INFORMATION pi;
STARTUPINFO si = {sizeof(si)};

GetSystemDirectory(cWindowsDirectory, MAX_PATH);
sCommandLine1 = CString(cWindowsDirectory) + _T("\\cmd.exe /c ");
sCommandLine2="cmd /k ";/*E:\\会计电算化\\1_3XPWin7\\AccountSysXPbbbbcd\\Debug\\WinRAR.exe";*/
sCommandLine2+=m_DnldPath1;
sCommandLine2+="\\WinRAR.exe e abc.rar abc.txt";
::strcpy(cCommandLine, sCommandLine2);
// 启动"记事本"作为子进程
BOOL ret = CreateProcess(NULL, cCommandLine, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi);
if (ret)
{
// 关闭子进程的主线程句柄
CloseHandle(pi.hThread);
// 等待子进程的退出
WaitForSingleObject(pi.hProcess, INFINITE);
// 获取子进程的退出码
GetExitCodeProcess(pi.hProcess, &dwExitCode);
// 关闭子进程句柄
CloseHandle(pi.hProcess);

隐藏解压窗口

HDESK hDesk = CreateDesktop(_T("MyDesk"), NULL, NULL, 0, GENERIC_ALL, NULL);  
ASSERT(hDesk);  
CString sCmdLine,sCommandLine1,sCommandLine2;
char cWindowsDirectory[MAX_PATH];
char cWndDir[50];
char cCmdLine[50];
DWORD dwExitCode;
 
PROCESS_INFORMATION pi={0};//启动窗口的信息
STARTUPINFO si = {sizeof(pi)};
si.lpDesktop = _T("MyDesk");  
si.dwFlags = STARTF_USESHOWWINDOW;  
si.wShowWindow = SW_HIDE;  


GetSystemDirectory(cWindowsDirectory, MAX_PATH);
sCommandLine1 = CString(cWindowsDirectory) + _T("\\cmd.exe /c ");
sCommandLine2="cmd /k ";
sCommandLine2+=m_DnldPath1;
sCommandLine2+="\\WinRAR.exe e abc.rar abc.txt";
::strcpy(cCmdLine, sCommandLine2);
//启动记事本的子进程
BOOL ret=CreateProcess(NULL,cCmdLine,NULL,NULL,FALSE,0,NULL,NULL,&si,&pi);
if(ret)
{
 CloseHandle(pi.hThread);
 CloseHandle(pi.hProcess);
}

0 0
原创粉丝点击