2011-01-04 8 views
4

내 모든 작업에이 함수를 사용할 수 있도록 문자열을 CreateProcess 함수에 전달하려고합니다. 그것을 올바르게하는 방법? 다음은 CreateProcess 함수에 문자열을 전달하는 방법은 무엇입니까?

내 코드입니다 :

CString ExecuteExternalProgram(CString pictureName) 
{ 
    CString parameterOne = _T(" -format \"%h\" C:\\"); 
    CString filename = pictureName; 
    CString parameterLast = _T("\""); 
    CString parameterFull = parameterOne + filename + parameterLast; 

    CreateProcess(_T("C:\\identify.exe"), parameterFull,0,0,TRUE, 
     NORMAL_PRIORITY_CLASS|CREATE_NO_WINDOW,0,0,&sInfo,&pInfo); 
    CloseHandle(wPipe); 

    ....... 
} 

오류 :

오류이 오류 C2664 : 'CreateProcessW': 'LPWSTR'C에 'ATL :: CString을'에서 매개 변수 2을 변환 할 수 없습니다 : \

CreateProcess(L"C:\\identify.exe",csExecute.GetBuffer(),0,0,TRUE, 
    NORMAL_PRIORITY_CLASS|CREATE_NO_WINDOW,0,0,&sInfo,&pInfo); 

CreateProcess()가 쓰기를 원하는 : cpp를

답변

2

당신은 같은 일을해야합니다 어떤 이유에서든 명령 행 매개 변수 용 버퍼를 사용할 수 없기 때문에 CString을 일반 오래된 포인터로 암시 적으로 변환하지 않습니다 (const 포인터에 대해서만 암시 적 변환을 수행하기 때문에).

문제가 해결되지 않은 경우 실행중인 오류 또는 예기치 않은 동작에 대한 자세한 정보를 게시하십시오. 내가 넣어 가지고

int main() { 
    CString csExecute = "some string data"; 

    STARTUPINFO sInfo = {0}; 
    sInfo.cb = sizeof(sInfo); 
    PROCESS_INFORMATION pInfo = {0}; 

    CreateProcess(L"C:\\util\\echoargs.exe",csExecute.GetBuffer(),0,0,TRUE, 
     NORMAL_PRIORITY_CLASS,0,0,&sInfo,&pInfo); 

    return 0; 
} 
+0

".GetBuffer을()"코드 내부 : 예를 들어

다음은이의 주어진 명령 줄을 덤프 조금 utilty 프로그램을 실행합니다. 그러나 그것은 여전히 ​​오류입니다. 위의 질문을 업데이트했습니다. – karikari

+0

나는 더 진전을 보였습니다. 다시 위의 코드를 업데이트했습니다. 하지만 여전히 오류가 있습니다. 도움이 필요합니다. – karikari

+0

문제가 해결되었습니다. 나는 parameterFull.GetBuffer()를 사용한다. 감사합니다 – karikari

관련 문제