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
[44257] Re:[질문] cmd.exe 로 메세지 출력문제?
에보니.^0^m [mortalpain] 1619 읽음    2006-03-25 11:41
정재만 님이 쓰신 글 :
: cmd.exe를 실행시켜  도스창을 띄운다음 도스창에서 윈도우 프로그램을 실행시킵니다.
:
: 그런다음 윈도우 프로그램에서 자신을 실행시킨  그콘솔(cmd.exe)로 메세지를 출력하는 문제인데
:
: 파이프등을 이용해도 쉽게 풀리지 않네요....
:
: 다른방식의 접근이 필요한것 같은데 ......
:
: 고수님들의 의견을 듣고 싶네요....

냠냠 몇년전의 소스에서 뒤져보니 있네요

ㅎㅎ 오랜만에 답변다넹 =ㅅ=ㅋ

ㅎㅎ 그리고 아는게 없네요 여러분 죄송;;

아래는 코드입니다 당연히 물대주는 파이프 썼구요

뭐 핵심 메소드 한개면 이해하실거라 믿습니다 =ㅅ=;;

bool __fastcall TSynapse::ExecuteCommand(String Command, String WorkDir)
{
  SECURITY_ATTRIBUTES sa;

  sa.nLength = sizeof(SECURITY_ATTRIBUTES);
  sa.lpSecurityDescriptor = NULL;
  sa.bInheritHandle = true;

  HANDLE hReadPipe, hWritePipe;

  bool flag;

  //create pipe handles

  flag = CreatePipe(&hReadPipe, &hWritePipe, &sa, 0);

  if ( flag && ( ( hReadPipe == INVALID_HANDLE_VALUE) || ( hWritePipe == INVALID_HANDLE_VALUE ) ) )
  {
     return false ;
  }

  STARTUPINFO si;  PROCESS_INFORMATION pi; memset(&si, 0, sizeof(STARTUPINFO));

  si.cb = sizeof (STARTUPINFO);
  si.dwFlags = STARTF_USESTDHANDLES | STARTF_USESHOWWINDOW;
  si.hStdOutput = hWritePipe;
  si.hStdError  = hWritePipe;

  if ( !CreateProcess(NULL, Command.c_str(), &sa, &sa, true, 0, NULL, WorkDir.c_str(), &si, &pi) )
  {
    CloseHandle(hReadPipe);
    return false ;
  }

  CloseHandle(hWritePipe);  // 핸들을 닫지않을 경우 프로세스가 블록된다.

  char buffer[512];
  DWORD BytesRead;
  String Result = "";

  Output->Clear() ;

  while ( ReadFile(hReadPipe, &buffer, sizeof(buffer) - 1, &BytesRead, NULL) && BytesRead )
  {
    buffer[BytesRead] = '\0';
    Result = Result + buffer;

    Application->ProcessMessages();
  }

  CloseHandle(hReadPipe);
  Output->Text = Result;
  return true;
}

+ -

관련 글 리스트
44242 [질문] cmd.exe 로 메세지 출력문제? 정재만 1170 2006/03/24
44257     Re:[질문] cmd.exe 로 메세지 출력문제? 에보니.^0^m 1619 2006/03/25
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.