You are on page 1of 4

Thầy và các bạn cho mình hỏi làm sao để xài hàm CreateProcess để chạy

commandline của winrar vậy,mình thử truyền các tham số như vầy thì hàm
nó không thực hiện được:

PROCESS_INFORMATION pi;

STARTUPINFO si;

ZeroMemory( &si, sizeof(si) );

si.cb = sizeof(si);

ZeroMemory( π, sizeof(pi) );

CreateProcess(_T("Rar.exe"),_T("rar a E:\MyCodeDaNen
E:\MyCode"),NULL,NULL,false,0,NULL,NULL,&si,π);

Ở đây mình nén thư mục MyCode thành MyCodeDaNen.rar,các file Rar.exe và
rarreg.key mình đã chép vô chung thư mục với file .exe của chương trình rồi!

Reply

Picture of Võ Thành Nhân

Re: Hỏi về cách sử dụng hàm CreateProcess để chạy commandline winrar

by Võ Thành Nhân - Monday, 28 March 2011, 11:42 AM

_T("rar a E:\MyCodeDaNen E:\MyCode")

Dùng \\ thay cho \ nhé bạn smile

==> _T("rar a E:\\MyCodeDaNen E:\\MyCode")

Show parent | Reply

Picture of Nguyễn Quang Huy


Re: Hỏi về cách sử dụng hàm CreateProcess để chạy commandline winrar

by Nguyễn Quang Huy - Monday, 28 March 2011, 08:18 PM

mình sửa rồi,vẫn không chạy được bạn ơi!sad

Show parent | Reply

Picture of Nguyễn Quang Huy

Re: Hỏi về cách sử dụng hàm CreateProcess để chạy commandline winrar

by Nguyễn Quang Huy - Tuesday, 29 March 2011, 02:57 PM

Ai biết làm ơn chỉ giúp mình đi!sad

Show parent | Reply

Deadline

Trả lời: Hỏi về cách sử dụng hàm CreateProcess để chạy commandline winrar

by Nguyễn Thành Long - Tuesday, 29 March 2011, 05:39 PM

đây là đoạn code mà mình dùng để gọi ứng dụng khác thông qua cmd.

TCHAR cmdLine[1000];

swprintf_s(cmdLine, 1000, _T("%s \"%s\""), szProgramPath, szFilePath);

ZeroMemory( &si, sizeof(si) );

si.cb = sizeof(si);

ZeroMemory( &pi, sizeof(pi) );

//AfxMessageBox(cmdLine);

if(::CreateProcessW(NULL, cmdLine, // Command Line

NULL, // Process handle not inheritable

NULL, // Thread handle not inheritable

FALSE, // Set handle inheritance to FALSE


NORMAL_PRIORITY_CLASS, // No creation flags

NULL, // Use parent's environment block

NULL, // Use parent's starting directory

&si, // Pointer to STARTUPINFO structure

&pi )) // Pointer to PROCESS_INFORMATION structure

// wait until process finish

WaitForSingleObject( pi.hProcess, INFINITE );

// Close process and thread handles.

CloseHandle( pi.hProcess );

CloseHandle( pi.hThread );

Mình thấy cái ăn tiền ở đây là đường dẫn tới file bị xử bắt buộc phải nằm
trong dấu nháy kép, còn program thực thi thì không cần.

Show parent | Reply

Picture of Nguyễn Quang Huy

Re: Trả lời: Hỏi về cách sử dụng hàm CreateProcess để chạy commandline
winrar

by Nguyễn Quang Huy - Tuesday, 29 March 2011, 09:26 PM

cảm ơn bạn nhiều lắm!

Show parent | Reply

Picture of Mai Anh Tuấn

Trả lời: Hỏi về cách sử dụng hàm CreateProcess để chạy commandline winrar

by Mai Anh Tuấn - Tuesday, 29 March 2011, 11:11 PM

Chào em,
Để sửa được lỗi của em thì cần phải có đường dẫn chính xác cho file thực thi
thì mới thực hiện được process. Ngoài ra, thầy có thử nghiệm với rar theo
cách của em thì thấy cần phải gọi cmd.exe trong windows 7. Cụ thể cấu trúc
2 tham số đầu như sau sẽ thực hiện được công việc của em:
CreateProcess(pEnvCMD,_T(" /c C:\\rar a E:\\MyCodeDaNen E:\\MyCode",..), ở
đây pEnvCMD là path của cmd.exe lấy thông qua hàm:
_tgetenv(_T("COMSPEC")). Em thử xem sao.

Thân,

GVHDTH.

You might also like