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
[73662] [해결]Re:외부 프로그램 실행후 값을 리턴받는 방법과 WIN32어플에 대해 질문있습니다.
낭천 [ktshas] 5378 읽음    2016-06-08 16:28
두분 다 답변감사합니다!

일에 인터럽트가 막들어와서 예정보다 며칠 밀렸는데 방금 잘 되는 것 확인했습니다.
C#프로그램에서 Console로 문자출력하면 While안 ReadFile에서 읽어들이는 것 성공했습니다.

ㅇㅇ 님이 쓰신 글 :
:
:
: CreatePipe 를 이용해
:
: rasdial 의 출력내용으로 접속성공 여부를 알아내는것입니다
:
: 어디선가 주운걸 수정한것입니다
:
:
:
: bool connectVpn( UnicodeString vs, UnicodeString vid , UnicodeString vpw )
: {
:     char strExec[256];
:
:     if( vs.Length() && vid.Length() && vpw.Length() )
:     {
:         formMain->addListLog( "vpn 접속 : %s , %s , %s" , OV(vs,vid,vpw));
:
:         sprintf( strExec , "rasdial %s %s %s" , vs.t_str() , vid.t_str() , vpw.t_str() );
:
:         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)
:         {
:             formMain->addListLog("Fail to open pipe.");
:             return false ;
:         }
:
:         // 콘솔어플리케이션 프로세스 실행을 위한 준비
:         STARTUPINFO si;
:         memset(&si, 0, sizeof(STARTUPINFO));
:         si.cb = sizeof(STARTUPINFO);
:         si.dwFlags = STARTF_USESTDHANDLES;
:         si.hStdOutput = hwrite;  // 표준출력(stdout) 리다이렉션
:         si.hStdError = hwrite;   // 표준에러(stderr) 리다이렉션
:         PROCESS_INFORMATION pi;
:
:         // 콘솔어플리케이션 프로세스 실행
:         flag = CreateProcess(NULL, strExec , NULL, NULL, true, DETACHED_PROCESS,
:           NULL, NULL, &si, &pi);
:         if(!flag)
:         {
:            formMain->addListLog("Fail to create process.");
:            return false;
:         }
:
:         CloseHandle(hwrite);//이것을 하지 않으면 프로세스가 block된다
:
:         char buffer[512];
:         DWORD BytesRead;
:         AnsiString ResultString;
:
:         while(ReadFile(hread, buffer, sizeof(buffer)-1, &BytesRead, NULL) && BytesRead)
:         {
:             buffer[BytesRead] = '\0';
:             ResultString = ResultString + buffer;
:
:
:         }
:         CloseHandle(hread);
:
:         if( ResultString.Pos( "명령을 완료했습니다." ) )
:         {
:             formMain->addListLog( "접속 성공" );
:
:             return true;
:         }
:
:         ShowMessage( ResultString );
:
:         formMain->addListLog( "연결할수 없음" );
:
:         return false;
:     }
:
:     return true;
: }
:

+ -

관련 글 리스트
73646 외부 프로그램 실행후 값을 리턴받는 방법과 WIN32어플에 대해 질문있습니다. 낭천 4563 2016/06/01
73648     Re:외부 프로그램 실행후 값을 리턴받는 방법과 WIN32어플에 대해 질문있습니다. ㅇㅇ 4786 2016/06/01
73662         [해결]Re:외부 프로그램 실행후 값을 리턴받는 방법과 WIN32어플에 대해 질문있습니다. 낭천 5378 2016/06/08
73647     Re:외부 프로그램 실행후 값을 리턴받는 방법과 WIN32어플에 대해 질문있습니다. 정영훈 5148 2016/06/01
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.