2009-09-30 7 views
9

आप सी ++ प्रोग्राम से पारित पैरामीटर के साथ निष्पादन योग्य कैसे चलाते हैं और आप इससे वापसी मूल्य कैसे प्राप्त करते हैं?सी ++ में पैरामीटर के साथ निष्पादन योग्य चलाना और वापसी मूल्य प्राप्त करना;

कुछ इस तरह: c: \ myprogram.exe -v

उत्तर

11

पोर्टेबल तरीका:

int retCode = system("prog.exe arg1 arg2 arg3"); 
एम्बेडेड उद्धरण/रिक्त स्थान के साथ

:

int retCode = system("prog.exe \"arg 1\" arg2 arg3"); 
+0

पैरा पैरा को कैसे संभालें उनमें जगहों के साथ मीटर? (उदाहरण के लिए "तर्क 1", "तर्क 2") – Bill

4

Windows पर, अगर आप चाहते हैं प्रक्रिया पर थोड़ा अधिक नियंत्रण, आप CreateProcess का उपयोग प्रक्रिया को बढ़ाने के लिए कर सकते हैं, WaitForSingleObject इसे बाहर निकलने के लिए प्रतीक्षा करने के लिए, और GetExitCodeProcess टी प्राप्त करने के लिए वह कोड वापस कर देता है।

यह तकनीक आपको बाल प्रक्रिया के इनपुट और आउटपुट, इसके पर्यावरण, और कुछ अन्य बिट्स और टुकड़ों को चलाने के तरीके को नियंत्रित करने की अनुमति देती है।

0

अंक
आप कैसे एक सी ++ प्रोग्राम से यह पारित मानकों के साथ एक निष्पादन चला सकता हूँ?
समाधान
उपयोग ShellExecuteEx और SHELLEXECUTEINFO

अंक
आप इसे कैसे से वापसी मान मिलता है?
समाधान पता करने के लिए
उपयोग GetExitCodeProcess और exitCode

आवश्यक चीजों
आप इस प्रक्रिया है, जो बाहरी exe से निपटने है तक इंतजार करना चाहते हैं, तो समाप्त हो गया है WaitForSingleObject

bool ClassName::ExecuteExternalExeFileNGetReturnValue(Parameter ...) 
{ 
    DWORD exitCode = 0; 
    SHELLEXECUTEINFO ShExecInfo = {0}; 
    ShExecInfo.cbSize = sizeof(SHELLEXECUTEINFO); 
    ShExecInfo.fMask = SEE_MASK_NOCLOSEPROCESS; 
    ShExecInfo.hwnd = NULL; 
    ShExecInfo.lpVerb = _T("open"); 
    ShExecInfo.lpFile = _T("XXX.exe");   
    ShExecInfo.lpParameters = strParameter.c_str(); 
    ShExecInfo.lpDirectory = strEXEPath.c_str(); 
    ShExecInfo.nShow = SW_SHOW; 
    ShExecInfo.hInstApp = NULL; 
    ShellExecuteEx(&ShExecInfo); 

    if(WaitForSingleObject(ShExecInfo.hProcess,INFINITE) == 0){    
     GetExitCodeProcess(ShExecInfo.hProcess, &exitCode); 
     if(exitCode != 0){ 
      return false; 
     }else{ 
      return true; 
     } 
    }else{ 
     return false; 
    } 
} 
उपयोग करने की आवश्यकता

Reference to know more detail