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
[56058] Re:cmd 동작 시키는데 정상적으로 동작은 잘 하는데...
둘리 [dooly386] 1190 읽음    2009-02-07 16:35
돌려봐야 되지만
ResultString = ResultString + buffer;
부분은 좋지않은 로드를 걸 수 있습니다.
또한 데이터 통신(파이프를 이용한 통신이죠 이경우) 이 빈번히 자주 일어나면 좋은 방법 갖지 않습니다.
다른 구조를 사용해 보심이 좋을듯 하군요. 데이터량이 적으면 별 문제 없겠지만요..


번외편 님이 쓰신 글 :
: 콘솔모드 동작을 시키는데 불필요한 코드가 좀있는것 같습니다.
: 동작시키는데 시간이 오래걸리는지 리소스가 많이 먹는건지 아니면 cmd 모드가
: 원래 이런지는 잘 모르겠지만
: 조금 불안한 면이 있는것 같습니다.
: 필요없거나 수정할 부분이 있다면 정정좀 해주세요.
:
:          int i,j=3;
:          char buffer[512];
:          char IP_Gateway[30];
:          int IP_Index;
:          bool flag;
:
:          DWORD BytesRead;
:          AnsiString ResultString;
:
:          HANDLE hwrite, hread;
:          SECURITY_ATTRIBUTES sa;
:          sa.nLength = sizeof(SECURITY_ATTRIBUTES);
:          sa.lpSecurityDescriptor = NULL;
:          sa.bInheritHandle = true;
:
:          flag = CreatePipe(&hread, &hwrite, &sa, 0);
:
:          STARTUPINFO si;
:          memset(&si, 0, sizeof(STARTUPINFO));
:          si.cb = sizeof(STARTUPINFO);
:          si.dwFlags = STARTF_USESTDHANDLES;
:          si.hStdOutput = hwrite;
:          si.hStdError = hwrite;
:          PROCESS_INFORMATION pi;
:
:          flag = CreateProcess(NULL, "route print", NULL, NULL,True, DETACHED_PROCESS,
:          NULL, NULL, &si, &pi);
:
:          CloseHandle(hwrite);
:
:          while(ReadFile(hread, buffer, sizeof(buffer)-1, &BytesRead, NULL) && BytesRead)
:          {
:                  buffer[BytesRead] = '\0';
:                  ResultString = ResultString + buffer;
:          }
:          CloseHandle(hread);
:
:          IP_Index = ResultString.AnsiPos("Default Gateway:");
:          memcpy(IP_Gateway,&ResultString[IP_Index+22],30);
:
:          CloseHandle(pi.hThread);
:          CloseHandle(pi.hProcess);
:
:          for( i=0;i<30;i++)
:          {
:                 if(IP_Gateway[i] == '.' )
:                 {
:                         j--;
:                 }
:
:                 if( j == 0 )
:                 {
:                         j = i +1 ;
:                         break ;
:                 }
:          }
:          memset(&IP_Gateway[j],0,(30 - j) );

+ -

관련 글 리스트
56051 cmd 동작 시키는데 정상적으로 동작은 잘 하는데... 번외편 1173 2009/02/07
56058     Re:cmd 동작 시키는데 정상적으로 동작은 잘 하는데... 둘리 1190 2009/02/07
56067         Re:Re:cmd 동작 시키는데 정상적으로 동작은 잘 하는데... 번외편 1256 2009/02/07
56070             Re:Re:Re:cmd 동작 시키는데 정상적으로 동작은 잘 하는데... 둘리 1299 2009/02/07
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.