|
돌려봐야 되지만
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) );
|