C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[76384] Re:CreateProcess로 도스 명령 실행후 메세지 받는게 잘 안됩니다.
난항테라 [sksgkd] 684 읽음    2022-11-16 10:00
뷰파인더 님이 쓰신 글 :
: 안녕하세요.
:
: 제목처럼 CreateProcess로 콘솔 명령을 실행했을 때 메세지 받는게 문제여서 문의 드립니다.
:
: 하고자 하는 작업은 콘솔창의 실행 내용 중 ERROR가 발견되면 message를 표시 하려는데 message를 가져오지 못해 이후 작업을 할수가 없어요.
:
: 아래와 같이 콘솔창에 나타납니다.
:
: 콘솔창(첨부파일 참조 : console.png) ===============================================
:
: E:\>cd E:\Personal\C_TEST\Jlink
:
: E:\Personal\C_TEST\Jlink>jlink.exe -ExitOnError -CommanderScript update.jlink
: SEGGER J-Link Commander V6.88a (Compiled Nov 18 2020 15:10:56)
: DLL version V6.88a, compiled Nov 18 2020 15:09:23
:
: J-Link Commander will now exit on Error
:
: J-Link Command File read successfully.
: Processing script file...
:
: J-Link connection not established yet but required for command.
: Connecting to J-Link via USB...O.K.
: Firmware: J-Link ARM V8 compiled Nov 28 2014 13:44:46
: Hardware version: V8.00
: S/N: -1
: License(s): RDI,FlashDL,FlashBP,JFlash,GDB
: VTref=3.338V
: Selecting SWD as current target interface.
:
: Selecting 4000 kHz as target interface speed
:
:
: Target connection not established yet but required for command.
:
: ==============================================================================
:
: 하지만 Pipe를 이용하여 전달 받은 data는 아래와 같습니다.
:
: Program memo (첨부파일 참조 : Memo1.JPG) =====================================================================
:
: --------------------------------------------------
: E:\>cd E:\Personal\C_TEST\Jlink
:
: E:\Personal\C_TEST\Jlink>jlink.exe -ExitOnError -CommanderScript update.jlink
:
: --------------------------------------------------
:
: =====================================================================
:
: code는 아래와 같습니다.
:
:
: void __fastcall TForm1::StartClick(TObject *Sender)
: {
:     AnsiString strFile;
:     OpenDialog1->InitialDir = ExtractFilePath(ParamStr(0));
: 
:     bool flag;
:     HANDLE hwrite, hread;
:     SECURITY_ATTRIBUTES sa;
:     sa.nLength = sizeof(SECURITY_ATTRIBUTES);
:     sa.lpSecurityDescriptor = NULL;
:     sa.bInheritHandle = true;
: 
:     flag = CreatePipe(&hread, &hwrite, &sa, 0);
:     if (!flag)
:     {
:          ShowMessage("Fail to open pipe.");
:          return;
:     }
: 
:     STARTUPINFO si;
:     memset(&si, 0, sizeof(STARTUPINFO));
:     si.cb = sizeof(STARTUPINFO);
:     si.dwFlags = STARTF_USESTDHANDLES;
:     si.hStdOutput = hwrite;
:     si.hStdError = hwrite;
:     PROCESS_INFORMATION pi;
: 
:     strFile = OpenDialog1->InitialDir + "\\Jlink\\update.bat";
:     flag = CreateProcess(NULL, strFile.c_str(), NULL, NULL, true, DETACHED_PROCESS,
:       NULL, NULL, &si, &pi);
:     if(!flag)
:     {
:        ShowMessage("Fail to create process.");
:        return;
:     }
:     CloseHandle(hwrite);
: 
: 
: 
:     char buffer[512*10];
:     DWORD BytesRead;
:     AnsiString ResultString;
: 
:     bool res   = NULL;
:         do
:         {
:           res=::ReadFile(hread,buffer,sizeof(buffer)-1,&BytesRead,0);
: 
:           if( BytesRead )
:           {
:            Memo1->Lines->Add( buffer );
: 
:            Memo1->Lines->Add( "--------------------------------------------------" );
:           }
:         }
:         while(res);
:     CloseHandle(hread);
: 
: 
: }
: 

:
: Firmware만 하다가 오랜만에 C builder를 하려니 어려워요. C builder는 6.0 입니다.


https://github.com/TurboPack/DOSCommand 참고하시면 도움이 되실겁니다

+ -

관련 글 리스트
76382 CreateProcess로 도스 명령 실행후 메세지 받는게 잘 안됩니다. 뷰파인더 663 2022/11/14
76384     Re:CreateProcess로 도스 명령 실행후 메세지 받는게 잘 안됩니다. 난항테라 684 2022/11/16
76383     Re:CreateProcess로 도스 명령 실행후 메세지 받는게 잘 안됩니다. 뷰파인더 659 2022/11/15
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.