您的位置:首页 > 其它

VC实现解压 隐藏解压窗口

2015-01-08 21:28 246 查看
当前路径解压命令:

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);

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: