दिलचस्प पोस्ट
स्थानीय समय में ऑर्डर किए गए टाइमस्टैम्प का पार्सिंग (यूटीसी तक) जबकि डेलाइट सेविंग टाइम का निरीक्षण करना स्थैतिक / गतिशील बनाम सशक्त / कमजोर सूची समझ में दोहरा परिवर्तन जावा के लिए सबसे अच्छा नकली ढांचे क्या है? PHP में वास्तविक समय आउटपुट के साथ चलाना प्रक्रिया एक जावा प्रोग्राम से .jar फ़ाइल निष्पादित करें एचटीएमएल कैनवास पर एक गोल आयत कैसे खींचना है? फ़ील्ड नाम के आसपास बैकट्क्स का उपयोग करना गैरकानूनीस्टेट अपवाद जब एक टुकड़ा की जगह विशिष्ट अजगर संस्करण के लिए पीआईपी का उपयोग करके एक मॉड्यूल स्थापित करें मैं एएसपी.नेट में स्ट्रिंग से एचटीएमएल टैग कैसे पट्टी कर सकता हूं? एक विशिष्ट समय-क्षेत्र में सप्ताह के दिन php में कैसे खोजें जावा में सिंगलटन पैटर्न को लागू करने का एक प्रभावी तरीका क्या है? डेटा फ्रेम से केवल संख्यात्मक स्तंभों का चयन करना ओरेकल पर AUTO_INCREMENT के साथ आईडी कैसे बनाऊँ?

इनो सेटअप में एक Exec'ed प्रोग्राम का आउटपुट कैसे प्राप्त करें?

क्या Exec 'एड एक्जिक्युटेबल के आउटपुट को प्राप्त करना संभव है?

मैं उपयोगकर्ता को एक जानकारी क्वेरी पृष्ठ दिखाना चाहता हूं, लेकिन इनपुट बॉक्स में मैक पते का डिफ़ॉल्ट मान दिखाता है। क्या यह हासिल करने का कोई अन्य तरीका है?

वेब के समाधान से एकत्रित समाधान "इनो सेटअप में एक Exec'ed प्रोग्राम का आउटपुट कैसे प्राप्त करें?"

हां, एक फ़ाइल में मानक आउटपुट के रीडायरेक्शन का उपयोग करें:

 [Code] function NextButtonClick(CurPage: Integer): Boolean; var TmpFileName, ExecStdout: string; ResultCode: integer; begin if CurPage = wpWelcome then begin TmpFileName := ExpandConstant('{tmp}') + '\ipconfig_results.txt'; Exec('cmd.exe', '/C ipconfig /ALL > "' + TmpFileName + '"', '', SW_HIDE, ewWaitUntilTerminated, ResultCode); if LoadStringFromFile(TmpFileName, ExecStdout) then begin MsgBox(ExecStdout, mbInformation, MB_OK); { do something with contents of file... } end; DeleteFile(TmpFileName); end; Result := True; end; 

ध्यान दें कि एक से अधिक नेटवर्क एडेप्टर हो सकते हैं, और इसके परिणामस्वरूप कई मैक पते चुन सकते हैं।

मुझे ऐसा करना था (कमांड लाइन कॉल निष्पादित और परिणाम प्राप्त) और एक अधिक सामान्य समाधान के साथ आया था

यह अजीब बग को भी ठीक करता है यदि उद्धृत पथ cmd.exe लिए /S ध्वज का उपयोग करके वास्तविक कॉल में उपयोग किया जाता है।

 { Exec with output stored in result. } { ResultString will only be altered if True is returned. } function ExecWithResult(const Filename, Params, WorkingDir: String; const ShowCmd: Integer; const Wait: TExecWait; var ResultCode: Integer; var ResultString: String): Boolean; var TempFilename: String; Command: String; begin TempFilename := ExpandConstant('{tmp}\~execwithresult.txt'); { Exec via cmd and redirect output to file. Must use special string-behavior to work. } Command := Format('"%s" /S /C ""%s" %s > "%s""', [ ExpandConstant('{cmd}'), Filename, Params, TempFilename]); Result := Exec(ExpandConstant('{cmd}'), Command, WorkingDir, ShowCmd, Wait, ResultCode); if not Result then Exit; LoadStringFromFile(TempFilename, ResultString); { Cannot fail } DeleteFile(TempFilename); { Remove new-line at the end } if (Length(ResultString) >= 2) and (ResultString[Length(ResultString) - 1] = #13) and (ResultString[Length(ResultString)] = #10) then Delete(ResultString, Length(ResultString) - 1, 2); end; 

उपयोग:

 Success := ExecWithResult('ipconfig', '/all', '', SW_HIDE, ewWaitUntilTerminated, ResultCode, ExecStdout) or (ResultCode <> 0); 

सभी लाइनों को प्राप्त करने के लिए परिणाम को एक TStringList ऑब्जेक्ट में भी लोड किया जा सकता है:

 Lines := TStringList.Create; Lines.Text := ExecStdout; { ... some code ... } Lines.Free;