gui를 구성하기 위해 Windows Forms 응용 프로그램을 사용하는 코드를 만들었습니다. 외부 exe 호출하려면 내 코드에서 시스템 명령을 사용하고 있습니다. 그러나이 방법은 명령 행 터미널을 작성합니다. 나는 시스템을 CreateProcess 함수 here으로 대체 할 수 있음을 발견했다. 이 기능을 어떻게 사용해야합니까? 실행하려면 어떤 매개 변수를 지정해야합니까? 내 코드는 지금 :시스템 대신 CreateProcess 함수
string run_template = "a.exe -i " + s1 + " -r 10 -f image2 filename%03d.jpg";
system(run_template.c_str());
편집 :
#include <tchar.h>
string workPath = "";
string args = "-i " + s1 + " -r 10 -f image2 vid/frames/filename%03d.jpg";
HINSTANCE hRet = ShellExecute(NULL, _T("open"), _T("a.exe"), _T(args.c_str()), _T(workPath.c_str()), SW_HIDE);
DWORD errNum = GetLastError();
나는 다음과 같은 오류가있어 :
이1>c\projects\first_api\first_api\Form1.h(229): error C2065: 'Largs' : undeclared identifier
1>c:\projects\first_api\first_api\Form1.h(229): error C2228: left of '.c_str' must have class/struct/union
1> type is ''unknown-type''
1>c:\projects\first_api\first_api\Form1.h(229): error C2065: 'LworkPath' : undeclared identifier
1>c:\projects\first_api\first_api\Form1.h(229): error C2228: left of '.c_str' must have class/struct/union
EDIT2 :
이string run_template = "a.exe -i " + s1 + " -r 1 -f image2 /filename%03d.jpg";
//system(run_template.c_str());
STARTUPINFOA si = {sizeof(STARTUPINFOA), 0};
PROCESS_INFORMATION pi = {0};
if (CreateProcessA(NULL, const_cast<char*>(run_template.c_str()), NULL, NULL, FALSE, CREATE_NO_WINDOW, NULL, NULL, &si, &pi)) {
CloseHandle(pi.hThread);
CloseHandle(pi.hProcess);
}
명령 프롬프트가 계속 사용 위의 코드.
제공하는 링크는 이전 Windows Mobile 6.5 버전입니다. 이것은 전체 Windows 버전과 동일해야하지만 [올바른 버전의 링크를 먼저 사용] (http://msdn.microsoft.com/en-us/library/windows/desktop/ms682425%28v)를 원할 수 있습니다. = vs.85 % 29.aspx). 그런 링크에는 [전체 예제 링크] (http://msdn.microsoft.com/en-us/library/windows/desktop/ms682512%28v=vs.85%29.aspx)가 포함되어 있습니다. –
'CreateProcess' 또는'ShellExecute'를 사용하여 얻은 컴파일 오류에 대해 묻고 있습니까? 그 두 가지는 다른 것입니다! 이 질문은 (CreateProcess를 사용하고 그 시도를 추가 한 후에) 유지할 수 있으며,'ShellExecute' 사용에 관해 새로운 질문을 할 수 있습니다. –
그래, 내가 Vembu 대답 Aravind로 인해 질문을 변경했습니다. 기본적으로 커맨드 라인을 숨기려면 시스템을 교체하고 싶습니다. –