|
VC项目开发中实现了一个利用winrar解压文件功能,程序代码片段如下:
int icount=m_LC.GetItemCount(); // CString cmd_str; // cmd_str="C:\Program Files\WinRAR\WinRAR.exe"; // cmd_str=cmd_str+" e "; // cmd_str=cmd_str+"C:\aa.zip"; // cmd_str=cmd_str+" C:\aa\"; //system(cmd_str); //::she m_progress.SetRange(1,icount); for(int i=0;i<icount;i++) { //cmd_str=" "; //cmd_str="c:\\Program Files\\WinRAR\\WinRAR.exe e "; //cmd_str+=file_list.GetItemText(i,1); //cmd_str+=" "; //cmd_str+=Get_drection(file_list.GetItemText(i,1)); //cmd_str+="\\"; //MessageBox(cmd_str); //::ShellExecuteEx(cmd_str); //::system(cmd_str); //this->m_test=cmd_str; if(check(m_LC.GetItemText(i,1))) { CString str="\""+m_LC.GetItemText(i,1)+"\""; str+=" \""+Get_drection(m_LC.GetItemText(i,1))+"\\\""; str=get_direct()+" x -o+ -IBCK "+str; PROCESS_INFORMATION pidInfo; STARTUPINFO startInfo; BOOL b; char *buf=" "; startInfo.cb = sizeof(STARTUPINFO); startInfo.lpReserved = NULL; startInfo.lpTitle = NULL; startInfo.lpDesktop = NULL; startInfo.dwX = 0; startInfo.dwY = 0; startInfo.dwXSize = 0; startInfo.dwYSize = 0; startInfo.dwXCountChars = 0; startInfo.dwYCountChars = 0; startInfo.dwFlags = STARTF_USESTDHANDLES; startInfo.wShowWindow = 0; //SW_SHOWDEFAULT; startInfo.lpReserved2 = NULL; startInfo.cbReserved2 = 0; startInfo.hStdInput = GetStdHandle(STD_INPUT_HANDLE); startInfo.hStdOutput = GetStdHandle(STD_OUTPUT_HANDLE); startInfo.hStdError = GetStdHandle(STD_ERROR_HANDLE); b=CreateProcess(NULL,str.GetBuffer(0),NULL,NULL,TRUE,CREATE_NO_WINDOW,NULL,NULL,&startInfo,&pidInfo); if(!b){ AfxMessageBox("failed"); return; } str.ReleaseBuffer(); WaitForSingleObject(pidInfo.hProcess,INFINITE); CloseHandle(pidInfo.hProcess); CloseHandle(pidInfo.hThread); } else { MessageBox("该文件非压缩文件哦::"+m_LC.GetItemText(i,1)); } m_progress.SetPos(i+1);
|